Files
upload-platform/upload/frontend/table/on_files_change.js
T
2026-09-05 12:31:17 +03:00

37 lines
1.1 KiB
JavaScript

import { listZipFiles } from '../zip/list_zip_files.js';
import { addFileWithDedup } from './add_file_with_dedup.js';
import { render } from './render.js';
export async function addFiles(state, cfg, files, elements) {
for (const file of Array.from(files)) {
if (!file.name.toLowerCase().endsWith('.zip')) {
if (!cfg.allowedExt.some((extension) => file.name.toLowerCase().endsWith(extension.toLowerCase()))) {
continue;
}
addFileWithDedup(state, {
id: crypto.randomUUID(), kind: 'file', name: file.name, path: file.name,
file, children: [], expanded: true,
});
continue;
}
try {
const zipTree = await listZipFiles(file, cfg.allowedExt);
if (zipTree) addFileWithDedup(state, zipTree);
} catch (error) {
continue;
}
}
render(state, elements);
}
export function onFilesChange(state, cfg, elements) {
return async () => {
if (state.busy) return;
state.busy = true;
try {
await addFiles(state, cfg, elements.fileInputEl.files, elements);
} finally {
state.busy = false;
}
};
}