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
This commit is contained in:
2026-10-18 21:13:39 +08:00
parent 4e90f832d9
commit 67e806037f

View File

@@ -2281,10 +2281,10 @@ async function ctxPause(f: any) {
const base = getApiBase() const base = getApiBase()
const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' }) const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' })
if (res.ok) { if (res.ok) {
pausedFileUuids.value.add(f.file_uuid) pausedFileUuids.value = new Set(pausedFileUuids.value).add(f.file_uuid)
const file = filesCache.value.find((x: any) => x.file_uuid === f.file_uuid)
if (file) file.status = 'paused'
actionMsg.value = `⏸ Paused: ${f.file_name}` actionMsg.value = `⏸ Paused: ${f.file_name}`
await loadFiles()
await loadPausedFiles()
} else { } else {
const err = await res.json().catch(() => ({})) const err = await res.json().catch(() => ({}))
actionMsg.value = `Pause failed: ${err.error || res.statusText}` actionMsg.value = `Pause failed: ${err.error || res.statusText}`
@@ -2303,7 +2303,7 @@ async function ctxResume(f: any) {
const base = getApiBase() const base = getApiBase()
const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/resume`, { method: 'POST' }) const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/resume`, { method: 'POST' })
if (res.ok) { 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}` actionMsg.value = `▶ Resumed: ${f.file_name}`
await loadFiles() await loadFiles()
await loadPausedFiles() await loadPausedFiles()
@@ -2333,9 +2333,6 @@ async function batchPause() {
try { try {
const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' }) const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' })
if (res.ok) { 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++ successCount++
} else { } else {
failCount++ failCount++
@@ -2349,6 +2346,8 @@ async function batchPause() {
await Promise.all(filesToPause.map(f => limit(() => pauseFile(f)))) await Promise.all(filesToPause.map(f => limit(() => pauseFile(f))))
if (successCount > 0) { if (successCount > 0) {
await loadFiles()
await loadPausedFiles()
actionMsg.value = `⏸ Paused ${successCount} files${failCount > 0 ? `, ${failCount} failed` : ''}` actionMsg.value = `⏸ Paused ${successCount} files${failCount > 0 ? `, ${failCount} failed` : ''}`
} else { } else {
actionMsg.value = `Failed to pause all ${failCount} files` actionMsg.value = `Failed to pause all ${failCount} files`
@@ -2372,7 +2371,6 @@ async function batchResume() {
try { try {
const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/resume`, { method: 'POST' }) const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/resume`, { method: 'POST' })
if (res.ok) { if (res.ok) {
pausedFileUuids.value.delete(f.file_uuid)
successCount++ successCount++
} else { } else {
failCount++ failCount++
@@ -2386,9 +2384,9 @@ async function batchResume() {
await Promise.all(filesToResume.map(f => limit(() => resumeFile(f)))) await Promise.all(filesToResume.map(f => limit(() => resumeFile(f))))
if (successCount > 0) { if (successCount > 0) {
actionMsg.value = `▶ Resumed ${successCount} files${failCount > 0 ? `, ${failCount} failed` : ''}`
await loadFiles() await loadFiles()
await loadPausedFiles() await loadPausedFiles()
actionMsg.value = `▶ Resumed ${successCount} files${failCount > 0 ? `, ${failCount} failed` : ''}`
} else { } else {
actionMsg.value = `Failed to resume all ${failCount} files` actionMsg.value = `Failed to resume all ${failCount} files`
} }