fix: allow global start to retry failed queue items

This commit is contained in:
Administrator 2026-03-26 11:00:46 +01:00
parent a3e956e085
commit f288ced84b

View File

@ -621,7 +621,7 @@ function updateUploadView() {
function updateStartButton() { function updateStartButton() {
const btn = document.getElementById('startUploadBtn'); const btn = document.getElementById('startUploadBtn');
const hosters = getSelectedHosters(); 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; btn.disabled = uploading || hosters.length === 0 || !hasFiles;
} }
@ -631,7 +631,7 @@ function updateQueueActionButtons() {
const hasSelection = selectedJobIds.size > 0; const hasSelection = selectedJobIds.size > 0;
const hasUploadSelection = queueJobs.some((job) => selectedJobIds.has(job.id) && ['done', 'error', 'aborted', 'skipped'].includes(job.status)); 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 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 hasMovableSelection = hasSelection && !uploading;
const startSelectedBtn = document.getElementById('startSelectedBtn'); 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 (hosters.length === 0) { alert('Bitte mindestens einen Hoster auswählen.'); uploading = false; updateQueueActionButtons(); return; }
if (queueJobs.length === 0 && selectedFiles.length > 0) buildQueuePreview(); 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; } if (jobsToStart.length === 0) { uploading = false; updateQueueActionButtons(); return; }
try { try {
queueJobs.forEach(j => { jobsToStart.forEach(j => {
if (j.status === 'preview') j.status = 'queued'; 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(); updateQueueActionButtons();
renderQueueTable(); renderQueueTable();