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

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