From 67e806037f2fcebd4d1a5f4e590a6bfbfd4e0bd7 Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Sun, 18 Oct 2026 21:13:39 +0800 Subject: [PATCH] fix: pause/resume now reloads files to update status badge - ctxPause and ctxResume now call loadFiles() + loadPausedFiles() - batchPause and batchResume also reload after completion - Use new Set() for proper Vue reactivity - Fixes status badge not updating after pause --- src/views/LibraryView.vue | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/views/LibraryView.vue b/src/views/LibraryView.vue index e538139..33dfca3 100644 --- a/src/views/LibraryView.vue +++ b/src/views/LibraryView.vue @@ -2281,10 +2281,10 @@ async function ctxPause(f: any) { const base = getApiBase() const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' }) if (res.ok) { - pausedFileUuids.value.add(f.file_uuid) - const file = filesCache.value.find((x: any) => x.file_uuid === f.file_uuid) - if (file) file.status = 'paused' + pausedFileUuids.value = new Set(pausedFileUuids.value).add(f.file_uuid) actionMsg.value = `⏸ Paused: ${f.file_name}` + await loadFiles() + await loadPausedFiles() } else { const err = await res.json().catch(() => ({})) actionMsg.value = `Pause failed: ${err.error || res.statusText}` @@ -2303,7 +2303,7 @@ async function ctxResume(f: any) { const base = getApiBase() const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/resume`, { method: 'POST' }) if (res.ok) { - pausedFileUuids.value.delete(f.file_uuid) + pausedFileUuids.value = new Set([...pausedFileUuids.value].filter(uuid => uuid !== f.file_uuid)) actionMsg.value = `▶ Resumed: ${f.file_name}` await loadFiles() await loadPausedFiles() @@ -2333,9 +2333,6 @@ async function batchPause() { try { const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' }) if (res.ok) { - pausedFileUuids.value.add(f.file_uuid) - const file = filesCache.value.find((x: any) => x.file_uuid === f.file_uuid) - if (file) file.status = 'paused' successCount++ } else { failCount++ @@ -2349,6 +2346,8 @@ async function batchPause() { await Promise.all(filesToPause.map(f => limit(() => pauseFile(f)))) if (successCount > 0) { + await loadFiles() + await loadPausedFiles() actionMsg.value = `⏸ Paused ${successCount} files${failCount > 0 ? `, ${failCount} failed` : ''}` } else { actionMsg.value = `Failed to pause all ${failCount} files` @@ -2372,7 +2371,6 @@ async function batchResume() { try { const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/resume`, { method: 'POST' }) if (res.ok) { - pausedFileUuids.value.delete(f.file_uuid) successCount++ } else { failCount++ @@ -2386,9 +2384,9 @@ async function batchResume() { await Promise.all(filesToResume.map(f => limit(() => resumeFile(f)))) if (successCount > 0) { - actionMsg.value = `▶ Resumed ${successCount} files${failCount > 0 ? `, ${failCount} failed` : ''}` await loadFiles() await loadPausedFiles() + actionMsg.value = `▶ Resumed ${successCount} files${failCount > 0 ? `, ${failCount} failed` : ''}` } else { actionMsg.value = `Failed to resume all ${failCount} files` }