diff --git a/renderer/app.js b/renderer/app.js index 3fb523e..3f9be1e 100644 --- a/renderer/app.js +++ b/renderer/app.js @@ -20,6 +20,9 @@ let queueSortState = { key: 'filename', direction: 'asc' }; let historyRowsData = []; let historySortState = { key: 'date', direction: 'desc' }; +// Session-specific files for the "Files" panel (resets each session) +let sessionFilesData = []; + // --- Init --- async function init() { config = await window.api.getConfig(); @@ -33,6 +36,7 @@ async function init() { setupListeners(); setupDragDrop(); loadHistory(); + renderRecentUploadsPanel(); updateUploadView(); if (shouldAutoResumeQueue()) { @@ -605,14 +609,6 @@ async function handleContextAction(action) { persistQueueStateSoon(); } else if (action === 'copy-all-links') { copyAllLinks(); - } else if (action === 'delete-all') { - if (!uploading) { - queueJobs = []; - selectedFiles = []; - selectedJobIds.clear(); - updateUploadView(); - clearPersistedQueueStateSoon(); - } } else if (action === 'always-on-top') { alwaysOnTopState = !alwaysOnTopState; await window.api.setAlwaysOnTop(alwaysOnTopState); @@ -757,6 +753,29 @@ function handleBatchDone(summary) { document.getElementById('cancelUploadBtn').style.display = 'none'; updateStartButton(); renderQueueTable(); + + // Add completed jobs to session files panel + const dt = formatDateTime(new Date()); + for (const job of queueJobs) { + if (job.status === 'done' && job.result) { + const link = job.result.download_url || job.result.embed_url || ''; + if (link && !sessionFilesData.some(s => s.link === link && s.filename === job.fileName && s.host === job.hoster)) { + sessionFilesData.push({ + date: dt.text, dateTs: dt.ts, + filename: job.fileName || '', host: job.hoster || '', + link, isError: false, order: sessionFilesData.length + }); + } + } else if (job.status === 'error') { + sessionFilesData.push({ + date: dt.text, dateTs: dt.ts, + filename: job.fileName || '', host: job.hoster || '', + link: `[Fehler] ${job.error || ''}`, isError: true, order: sessionFilesData.length + }); + } + } + renderRecentUploadsPanel(); + loadHistory(); clearPersistedQueueStateSoon(); @@ -1020,7 +1039,6 @@ async function loadHistory() { if (!history || history.length === 0) { historyRowsData = []; container.innerHTML = '

Noch keine Uploads.

'; - renderRecentUploadsPanel(); return; } @@ -1043,18 +1061,17 @@ async function loadHistory() { } renderHistoryTable(container); - renderRecentUploadsPanel(); } function renderRecentUploadsPanel() { const tbody = document.getElementById('recentFilesBody'); if (!tbody) return; - if (!historyRowsData.length) { - tbody.innerHTML = 'Noch keine Uploads.'; + if (!sessionFilesData.length) { + tbody.innerHTML = 'Noch keine Uploads in dieser Session.'; return; } - const rows = historyRowsData + const rows = sessionFilesData .slice() .sort((a, b) => b.dateTs - a.dateTs || b.order - a.order) .slice(0, 20); @@ -1148,15 +1165,6 @@ function setupListeners() { queueJobs.forEach(j => { if (j.status === 'error') selectedJobIds.add(j.id); }); retrySelectedJobs(); }); - document.getElementById('clearQueueBtn').addEventListener('click', () => { - if (!uploading) { - queueJobs = []; - selectedFiles = []; - selectedJobIds.clear(); - updateUploadView(); - clearPersistedQueueStateSoon(); - } - }); document.getElementById('confirmHosterModalBtn').addEventListener('click', applyHosterSelection); document.getElementById('cancelHosterModalBtn').addEventListener('click', closeHosterModal); document.getElementById('closeHosterModalBtn').addEventListener('click', closeHosterModal); diff --git a/renderer/index.html b/renderer/index.html index 6c26de4..252a0fd 100644 --- a/renderer/index.html +++ b/renderer/index.html @@ -76,7 +76,6 @@
@@ -131,7 +130,6 @@
Entfernen
Alle Links kopieren
-
Alle entfernen
Shutdown nach Finish