Reattach Comfy watchers after refresh so pending jobs finish and save.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+22
-2
@@ -1792,7 +1792,7 @@ async function resumeTrack(kind: 'video' | 'edit', id: string, hidden: boolean,
|
||||
editStatusMessage.value = snap.message || 'Reconnecting to edit ComfyUI...'
|
||||
} else {
|
||||
videoBusy.value = true
|
||||
statusMessage.value = snap.message || 'Reconnecting to ComfyUI...'
|
||||
statusMessage.value = snap.message || 'Waiting for ComfyUI to finish this job...'
|
||||
}
|
||||
startTimer(kind, Number(snap.elapsedMs || 0))
|
||||
persistActiveJob(kind, id, hidden, locked)
|
||||
@@ -2615,6 +2615,16 @@ function listen(kind: 'video' | 'edit', id: string, hidden: boolean, folderLocke
|
||||
if (gen !== (isEdit ? editListenGen : videoListenGen)) return
|
||||
applyJobEvent(kind, JSON.parse(event.data), hidden, folderLocked, id)
|
||||
}
|
||||
source.onerror = () => {
|
||||
if (gen !== (isEdit ? editListenGen : videoListenGen)) return
|
||||
source.close()
|
||||
setTimeout(() => {
|
||||
if (gen !== (isEdit ? editListenGen : videoListenGen)) return
|
||||
if (isEdit ? editSettledUi : videoSettledUi) return
|
||||
listen(kind, id, hidden, folderLocked)
|
||||
}, 2000)
|
||||
}
|
||||
let misses = 0
|
||||
const tick = async () => {
|
||||
const currentGen = isEdit ? editListenGen : videoListenGen
|
||||
const settled = isEdit ? editSettledUi : videoSettledUi
|
||||
@@ -2624,6 +2634,7 @@ function listen(kind: 'video' | 'edit', id: string, hidden: boolean, folderLocke
|
||||
}
|
||||
try {
|
||||
const snap = await $fetch<Record<string, any>>(`/api/generate/${id}`)
|
||||
misses = 0
|
||||
if (gen !== (isEdit ? editListenGen : videoListenGen)) return
|
||||
applyJobEvent(kind, snap, hidden, folderLocked, id)
|
||||
} catch {
|
||||
@@ -2633,10 +2644,19 @@ function listen(kind: 'video' | 'edit', id: string, hidden: boolean, folderLocke
|
||||
method: 'POST',
|
||||
body: { jobId: id }
|
||||
})
|
||||
misses = 0
|
||||
if (gen !== (isEdit ? editListenGen : videoListenGen)) return
|
||||
applyJobEvent(kind, recovered, hidden, folderLocked, id)
|
||||
} catch {
|
||||
// Job snapshot can 404 briefly after a restart; keep polling while busy.
|
||||
misses += 1
|
||||
if (misses >= 20) {
|
||||
applyJobEvent(kind, {
|
||||
type: 'error',
|
||||
status: 'error',
|
||||
error: 'Lost the running job after refresh. Check the library, or generate again.',
|
||||
message: 'Lost the running job after refresh. Check the library, or generate again.'
|
||||
}, hidden, folderLocked, id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user