diff --git a/renderer/app.js b/renderer/app.js index 2cbaecf..efa8e92 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -563,21 +563,29 @@ function buildPersistedQueueState() { return null; } + // After a restart no upload manager is running, so any in-flight state + // (queued / getting-server / uploading / retrying / aborted) is + // meaningless. Collapse them all to 'preview' so the queue shows a + // consistent "Bereit" for everything that didn't actually terminate. + // Only true terminal states (done / error / skipped) survive as-is. + const TERMINAL = new Set(['done', 'error', 'skipped']); return { selectedUploadHosters: getSelectedHosters(), selectedFiles: Array.from(selectedFileMap.values()), - queueJobs: queueJobs.map(job => ({ - id: job.id, - file: job.file, - fileName: job.fileName, - hoster: job.hoster, - // Save aborted jobs as queued so they survive restart - status: job.status === 'aborted' ? 'queued' : job.status, - bytesTotal: job.bytesTotal || 0, - error: job.status === 'aborted' ? null : (job.error || null), - result: job.result || null, - maxAttempts: job.maxAttempts || 0 - })) + queueJobs: queueJobs.map(job => { + const isTerminal = TERMINAL.has(job.status); + return { + id: job.id, + file: job.file, + fileName: job.fileName, + hoster: job.hoster, + status: isTerminal ? job.status : 'preview', + bytesTotal: job.bytesTotal || 0, + error: isTerminal ? (job.error || null) : null, + result: isTerminal ? (job.result || null) : null, + maxAttempts: job.maxAttempts || 0 + }; + }) }; }