v1.0.178: fix — onFilesSelected больше не удаляет существущие файлы. reconcileSelection убрана из оркестратора. Файлы из ZIP/предыдущих загрузок сохраняются при добавлении новых.

This commit is contained in:
2026-06-25 10:33:36 +04:00
parent 60dd40cf05
commit 91f22137d7
+13 -14
View File
@@ -432,26 +432,25 @@ async function finalizeUpload() {
/**
* onFilesSelected(newFiles) — Оркестратор загрузки (Фаза 1).
*
* ПАТТЕРН (decoupling-final-plan.md):
* 1. reconcileSelection — согласовать состав (чистая мутация)
* 2. Для каждого файла: addZipFile (ZIP) или addRegularFile (обычный)
* 3. finalizeUpload — завершить цикл
* ПАТТЕРН:
* 1. Для каждого файла: addZipFile (ZIP) или addRegularFile (обычный)
* 2. finalizeUpload — завершить цикл
*
* НЕ удаляет существующие файлы — только добавляет новые.
* Дубликаты обрабатываются через confirm() в addRegularFile.
* Удаление — только вручную (кнопка ✕).
*
* Это ТОНКАЯ функция (~15 строк) — вся логика в шагах 1-3.
* Вызывается из fileInput.addEventListener('change', ...).
*/
async function onFilesSelected(newFiles) {
if (newFiles.length === 0) return;
fileInput.disabled = true;
// Шаг 1: согласовать состав — убрать файлы, которых нет в новом выборе
state.files = reconcileSelection(state.files, newFiles);
render(state);
showClassifyBtn();
// Сбросить прогресс пайплайна при добавлении новых файлов
resetStepper('stepUpload');
// Шаг 2: обработать каждый файл
// Обработать каждый файл
for (var i = 0; i < newFiles.length; i++) {
var f = newFiles[i];
if (f.name.toLowerCase().endsWith('.zip')) {
@@ -460,7 +459,7 @@ async function onFilesSelected(newFiles) {
await addRegularFile(f);
}
}
// Шаг 3: финализация
// Завершить цикл
await finalizeUpload();
}