diff --git a/renderer/app.js b/renderer/app.js index cc3166d..50bc7b4 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -1800,10 +1800,12 @@ function _markSkippedJobs(result) { async function startSelectedUpload() { if (uploading) { - // Batch already running — add selected jobs (queued/error/aborted/skipped) to running batch - // Upload-manager has duplicate protection (skips jobs already tracked) - const addable = queueJobs.filter(j => selectedJobIds.has(j.id) && ['queued', 'error', 'aborted', 'skipped'].includes(j.status)); - if (addable.length > 0) { + const addable = queueJobs.filter(j => selectedJobIds.has(j.id) && isStartableQueueStatus(j.status)); + if (addable.length === 0) { + if (selectedJobIds.size > 0) showCopyToast('Keine startbaren Jobs ausgewählt (alle laufen schon oder sind fertig).'); + return; + } + { addable.forEach(j => { j.status = 'queued'; j.error = null; j.result = null; j.bytesUploaded = 0; j.speedKbs = 0; j.progress = 0; j.uploadId = null; @@ -1848,7 +1850,6 @@ async function startSelectedUpload() { } return; } - return; } uploading = true; // set immediately to prevent double-click race updateQueueActionButtons();