Skip to content
3 changes: 3 additions & 0 deletions invokeai/frontend/web/src/services/api/endpoints/queue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -278,9 +278,12 @@ export const queueApi = api.injectEndpoints({
return [];
}
return [
'SessionQueueStatus',
'BatchStatus',
'CurrentSessionQueueItem',
'NextSessionQueueItem',
'QueueCountsByDestination',
'SessionQueueItemIdList',
{ type: 'SessionQueueItem', id: LIST_TAG },
{ type: 'SessionQueueItem', id: LIST_ALL_TAG },
...item_ids.map((id) => ({ type: 'SessionQueueItem', id }) satisfies ApiTagDescription),
Expand Down
41 changes: 41 additions & 0 deletions invokeai/frontend/web/src/services/events/setEventListeners.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@ export const setEventListeners = ({ socket, store, setIsConnected }: SetEventLis
'CurrentSessionQueueItem',
'NextSessionQueueItem',
'InvocationCacheStatus',
'SessionQueueItemIdList',
{ type: 'SessionQueueItem', id: item_id },
{ type: 'SessionQueueItem', id: LIST_TAG },
{ type: 'SessionQueueItem', id: LIST_ALL_TAG },
Expand Down Expand Up @@ -443,14 +444,54 @@ export const setEventListeners = ({ socket, store, setIsConnected }: SetEventLis

socket.on('queue_cleared', (data) => {
log.debug({ data }, 'Queue cleared');
dispatch(
queueApi.util.invalidateTags([
'SessionQueueStatus',
'SessionProcessorStatus',
'BatchStatus',
'CurrentSessionQueueItem',
'NextSessionQueueItem',
'QueueCountsByDestination',
'SessionQueueItemIdList',
{ type: 'SessionQueueItem', id: LIST_TAG },
{ type: 'SessionQueueItem', id: LIST_ALL_TAG },
])
);
});

socket.on('batch_enqueued', (data) => {
log.debug({ data }, 'Batch enqueued');
dispatch(
queueApi.util.invalidateTags([
'CurrentSessionQueueItem',
'NextSessionQueueItem',
'QueueCountsByDestination',
'SessionQueueItemIdList',
{ type: 'SessionQueueItem', id: LIST_TAG },
{ type: 'SessionQueueItem', id: LIST_ALL_TAG },
])
);
});

socket.on('queue_items_retried', (data) => {
log.debug({ data }, 'Queue items retried');
const tagsToInvalidate: ApiTagDescription[] = [
'SessionQueueStatus',
'BatchStatus',
'CurrentSessionQueueItem',
'NextSessionQueueItem',
'QueueCountsByDestination',
'SessionQueueItemIdList',
{ type: 'SessionQueueItem', id: LIST_TAG },
{ type: 'SessionQueueItem', id: LIST_ALL_TAG },
];
// Invalidate each retried item specifically
if (data.retried_item_ids) {
for (const itemId of data.retried_item_ids) {
tagsToInvalidate.push({ type: 'SessionQueueItem', id: itemId });
}
}
dispatch(queueApi.util.invalidateTags(tagsToInvalidate));
});

socket.on('bulk_download_started', (data) => {
Expand Down