diff --git a/renderer/app.js b/renderer/app.js index 2fb555a..f3dae98 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -621,7 +621,7 @@ function updateUploadView() { function updateStartButton() { const btn = document.getElementById('startUploadBtn'); const hosters = getSelectedHosters(); - const hasFiles = queueJobs.some(j => j.status === 'queued' || j.status === 'preview'); + const hasFiles = queueJobs.some(j => j.status === 'queued' || j.status === 'preview' || j.status === 'error'); btn.disabled = uploading || hosters.length === 0 || !hasFiles; } @@ -631,7 +631,7 @@ function updateQueueActionButtons() { const hasSelection = selectedJobIds.size > 0; const hasUploadSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['done', 'error', 'aborted', 'skipped'].includes(job.status)); const hasAbortSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['preview', 'queued', 'getting-server', 'uploading', 'retrying'].includes(job.status)); - const hasStartableSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['preview', 'queued'].includes(job.status)); + const hasStartableSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['preview', 'queued', 'error'].includes(job.status)); const hasMovableSelection = hasSelection && !uploading; const startSelectedBtn = document.getElementById('startSelectedBtn'); @@ -1302,12 +1302,20 @@ async function startUpload() { if (hosters.length === 0) { alert('Bitte mindestens einen Hoster auswählen.'); uploading = false; updateQueueActionButtons(); return; } if (queueJobs.length === 0 && selectedFiles.length > 0) buildQueuePreview(); - const jobsToStart = queueJobs.filter((job) => job.status === 'preview' || job.status === 'queued'); + const jobsToStart = queueJobs.filter((job) => job.status === 'preview' || job.status === 'queued' || job.status === 'error'); if (jobsToStart.length === 0) { uploading = false; updateQueueActionButtons(); return; } try { - queueJobs.forEach(j => { - if (j.status === 'preview') j.status = 'queued'; + jobsToStart.forEach(j => { + j.status = 'queued'; + j.error = null; + j.result = null; + j.bytesUploaded = 0; + j.speedKbs = 0; + j.elapsed = 0; + j.remaining = 0; + j.progress = 0; + j.uploadId = null; }); updateQueueActionButtons(); renderQueueTable();