fix upload multi

This commit is contained in:
2025-05-30 23:31:14 +02:00
parent 0d5fd83e01
commit f13f5a1e08
3 changed files with 157 additions and 29 deletions

View File

@@ -188,17 +188,22 @@ export class UploadManager {
try {
updateProgress();
let uploadFormData = formData;
if (this.overwriteAll) {
uploadFormData = new FormData(this.uploadForm);
if (this.roomManager.currentPath) {
uploadFormData.append('path', this.roomManager.currentPath);
}
uploadFormData.set('file', file);
uploadFormData.append('overwrite', 'true');
// If skipAll is true, skip this file
if (this.skipAll) {
console.log('[UploadManager] Skipping file due to skipAll:', file.name);
currentFileIndex++;
updateProgress();
await processNextFile();
return;
}
const response = await this.uploadFile(uploadFormData);
// If overwriteAll is true, add overwrite flag
if (this.overwriteAll) {
console.log('[UploadManager] Overwriting file due to overwriteAll:', file.name);
formData.append('overwrite', 'true');
}
const response = await this.uploadFile(formData);
if (response.success) {
completedFiles++;
@@ -211,11 +216,28 @@ export class UploadManager {
updateProgress();
await processNextFile();
} else if (response.error === 'File exists') {
const result = await this.handleFileExists(file, uploadFormData);
if (result.continue) {
// If we have skipAll or overwriteAll set, handle it here
if (this.skipAll) {
console.log('[UploadManager] Skipping existing file due to skipAll:', file.name);
currentFileIndex++;
updateProgress();
await processNextFile();
} else if (this.overwriteAll) {
console.log('[UploadManager] Overwriting existing file due to overwriteAll:', file.name);
formData.append('overwrite', 'true');
await this.uploadFile(formData);
completedFiles++;
currentFileIndex++;
updateProgress();
await processNextFile();
} else {
const result = await this.handleFileExists(file, formData);
if (result.continue) {
completedFiles++;
currentFileIndex++;
updateProgress();
await processNextFile();
}
}
}
} catch (error) {
@@ -245,6 +267,15 @@ export class UploadManager {
});
const result = await response.json();
// Handle 409 Conflict response
if (response.status === 409) {
return {
success: false,
error: 'File exists'
};
}
return {
success: response.ok,
error: result.error
@@ -294,7 +325,7 @@ export class UploadManager {
if (this.overwriteAll) {
formData.append('overwrite', 'true');
const response = await this.uploadFile(formData);
return { continue: response.success };
return { continue: true };
}
if (this.skipAll) {
@@ -303,20 +334,30 @@ export class UploadManager {
const result = await this.roomManager.modalManager.showOverwriteModal(file.name);
// Add a delay before processing the result
await new Promise(resolve => setTimeout(resolve, 500));
if (result === 'overwrite' || result === 'overwrite_all') {
if (result === 'overwrite_all') {
this.overwriteAll = true;
this.skipAll = false;
formData.append('overwrite', 'true');
await this.uploadFile(formData);
return { continue: true };
} else {
formData.append('overwrite', 'true');
await this.uploadFile(formData);
return { continue: true };
}
formData.append('overwrite', 'true');
const response = await this.uploadFile(formData);
return { continue: response.success };
} else if (result === 'skip' || result === 'skip_all') {
if (result === 'skip_all') {
this.skipAll = true;
this.overwriteAll = false;
}
return { continue: true };
}
return { continue: false };
// If user closes the modal without making a choice, skip the file
return { continue: true };
}
}