Let finished caption jobs be dismissed from the Queue panel.
This commit is contained in:
@@ -1,15 +1,40 @@
|
||||
import { records, saveRecord } from '../../utils/studio2/store';
|
||||
import { listStudioJobs } from '../../utils/studioQueue';
|
||||
export default defineEventHandler(event => {
|
||||
const { owner } = assertLibraryOwner(event), queue=listStudioJobs(owner);
|
||||
let cleared=0;
|
||||
for (const r of records(owner)) {
|
||||
try { assertFolderAccess(event,r.request.folderId); } catch { continue; }
|
||||
const status=queue.find(q=>q.id===r.queueId)?.status;
|
||||
if (['complete','failed','cancelled'].includes(r.state) || ['cancelled','error'].includes(status || '')) {
|
||||
r.dismissed=true; saveRecord(r); cleared++;
|
||||
import { records, saveRecord } from '../../utils/studio2/store'
|
||||
import { dismissFinishedStudioJobs, dismissStudioJob, listStudioJobs } from '../../utils/studioQueue'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { owner } = assertLibraryOwner(event)
|
||||
const body = await readBody<{ id?: string }>(event).catch(() => ({} as { id?: string }))
|
||||
const queue = listStudioJobs(owner)
|
||||
let cleared = 0
|
||||
|
||||
if (body?.id) {
|
||||
const row = queue.find(job => job.id === body.id)
|
||||
if (!row) throw createError({ statusCode: 404, statusMessage: 'Queued job not found' })
|
||||
try { assertFolderAccess(event, row.payload.folderId) } catch {
|
||||
throw createError({ statusCode: 403, statusMessage: 'Folder locked' })
|
||||
}
|
||||
await dismissStudioJob(owner, body.id)
|
||||
return { cleared: 1 }
|
||||
}
|
||||
}
|
||||
// Retain internal manifests for cleanup retries; remove these records from the visible jobs list.
|
||||
return {cleared};
|
||||
});
|
||||
|
||||
for (const r of records(owner)) {
|
||||
try { assertFolderAccess(event, r.request.folderId) } catch { continue }
|
||||
const status = queue.find(q => q.id === r.queueId)?.status
|
||||
if (['complete', 'failed', 'cancelled'].includes(r.state) || ['cancelled', 'error'].includes(status || '')) {
|
||||
r.dismissed = true
|
||||
saveRecord(r)
|
||||
cleared++
|
||||
}
|
||||
}
|
||||
|
||||
// Caption (and other finished studio-queue) cards — hide from Queue, keep resultText on the row
|
||||
const finishedIds = queue
|
||||
.filter(job => !job.dismissed && ['complete', 'error', 'cancelled'].includes(job.status))
|
||||
.filter(job => {
|
||||
try { assertFolderAccess(event, job.payload.folderId); return true } catch { return false }
|
||||
})
|
||||
.map(job => job.id)
|
||||
cleared += await dismissFinishedStudioJobs(owner, finishedIds)
|
||||
|
||||
return { cleared }
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user