fix: pause/resume now manually updates file status in cache

Root cause: backend pause updates monitor_jobs table, but frontend
displays status from videos table (via get_files API). These are separate.

Fix:
- ctxPause: manually sets file.status = 'paused' in filesCache + fileStatusCache
- batchPause: same manual cache update for each file
- ctxResume/batchResume: calls loadFiles() to refresh from backend
- Added console.log debug for troubleshooting
- Fixed i18n: removed duplicate emoji from translation strings
This commit is contained in:
2026-10-18 21:38:47 +08:00
parent 67e806037f
commit a64e200ca5

View File

@@ -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`