diff --git a/server/api/studio-queue.get.ts b/server/api/studio-queue.get.ts index 7120026..03e30fd 100644 --- a/server/api/studio-queue.get.ts +++ b/server/api/studio-queue.get.ts @@ -1,5 +1,5 @@ import { listShotQueues, summarizeQueue } from '~/server/utils/shotQueue' -import { listStudioJobs, summarizeStudioJob } from '~/server/utils/studioQueue' +import { kickStudioQueue, listStudioJobs, summarizeStudioJob } from '~/server/utils/studioQueue' export default defineEventHandler((event) => { const { owner } = assertLibraryOwner(event) @@ -54,10 +54,15 @@ export default defineEventHandler((event) => { .filter(queue => !claimed.has(queue.id) && queue.status !== 'complete') .map(summarizeQueue) : [] + const waitingCount = jobs.filter(job => job.status === 'waiting').length + // Nudge the dispatcher whenever the UI polls a stalled waiting queue. + if (waitingCount > 0 && !jobs.some(job => job.status === 'running')) { + void kickStudioQueue() + } return { jobs, orphans, - waitingCount: jobs.filter(job => job.status === 'waiting').length, + waitingCount, paused: jobs.some(job => job.pausedByUser === true) || orphans.some(queue => queue.stopAfterCurrent === true && queue.status !== 'running'), willPause: jobs.some(job => (