diff --git a/src/views/LibraryView.vue b/src/views/LibraryView.vue index 33dfca3..7e7ac5e 100644 --- a/src/views/LibraryView.vue +++ b/src/views/LibraryView.vue @@ -2276,22 +2276,31 @@ async function ctxUnregister(f: any) { // Pause / Resume functions async function ctxPause(f: any) { closeContextMenu() - if (!f?.file_uuid) return + if (!f?.file_uuid) { console.error('[ctxPause] no file_uuid'); return } try { const base = getApiBase() - const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' }) + const url = `${base}/api/v1/jobs/${f.file_uuid}/pause` + console.log('[ctxPause] calling:', url) + const res = await fetch(url, { method: 'POST' }) + console.log('[ctxPause] response status:', res.status) if (res.ok) { pausedFileUuids.value = new Set(pausedFileUuids.value).add(f.file_uuid) + // Manually update file status in cache (backend pause only updates monitor_jobs, not videos table) + const file = filesCache.value.find((x: any) => x.file_uuid === f.file_uuid) + if (file) { + file.status = 'paused' + fileStatusCache.value[f.file_uuid] = 'paused' + } actionMsg.value = `⏸ Paused: ${f.file_name}` - await loadFiles() - await loadPausedFiles() + console.log('[ctxPause] success, status updated to paused') } else { const err = await res.json().catch(() => ({})) actionMsg.value = `Pause failed: ${err.error || res.statusText}` + console.error('[ctxPause] failed:', err) } } catch (e: any) { actionMsg.value = `Pause error: ${e.message}` - console.error('[ctxPause]', e) + console.error('[ctxPause] error:', e) } setTimeout(() => { actionMsg.value = '' }, 5000) } @@ -2333,6 +2342,12 @@ async function batchPause() { try { const res = await fetch(`${base}/api/v1/jobs/${f.file_uuid}/pause`, { method: 'POST' }) if (res.ok) { + // Manually update status in cache + const file = filesCache.value.find((x: any) => x.file_uuid === f.file_uuid) + if (file) { + file.status = 'paused' + fileStatusCache.value[f.file_uuid] = 'paused' + } successCount++ } else { failCount++ @@ -2345,9 +2360,10 @@ async function batchPause() { await Promise.all(filesToPause.map(f => limit(() => pauseFile(f)))) + // Update paused set for reactivity + pausedFileUuids.value = new Set(pausedFileUuids.value) + 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`