fix: session-based files panel and remove delete-all

This commit is contained in:
Administrator 2026-03-10 23:46:53 +01:00
parent c313bc9175
commit d3b1957bc0
2 changed files with 30 additions and 24 deletions

View File

@ -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 = '<p class="empty-state">Noch keine Uploads.</p>';
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 = '<tr><td colspan="4" class="empty-state">Noch keine Uploads.</td></tr>';
if (!sessionFilesData.length) {
tbody.innerHTML = '<tr><td colspan="4" class="empty-state">Noch keine Uploads in dieser Session.</td></tr>';
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);

View File

@ -76,7 +76,6 @@
<div class="queue-actions" id="queueActions" style="display:none">
<button class="btn btn-xs btn-primary" id="copyAllLinksBtn">Alle Links kopieren</button>
<button class="btn btn-xs btn-secondary" id="retryFailedBtn" style="display:none">Fehlgeschlagene erneut</button>
<button class="btn btn-xs btn-secondary" id="clearQueueBtn">Queue leeren</button>
</div>
<div class="recent-files-panel" id="recentFilesPanel">
@ -131,7 +130,6 @@
<div class="ctx-item" data-action="delete-selected">Entfernen</div>
<div class="ctx-separator"></div>
<div class="ctx-item" data-action="copy-all-links">Alle Links kopieren</div>
<div class="ctx-item" data-action="delete-all">Alle entfernen</div>
<div class="ctx-separator"></div>
<div class="ctx-item ctx-submenu" data-action="shutdown">
Shutdown nach Finish