From bdfa2efa509770f5cc4f1567b243189cd676749f Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Wed, 26 Feb 2025 16:04:01 -0500 Subject: [PATCH] [BugFix] Remove outputs.animated in queueStore (#2740) --- src/stores/queueStore.ts | 10 +++++- tests-ui/tests/store/queueStore.test.ts | 42 +++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests-ui/tests/store/queueStore.test.ts diff --git a/src/stores/queueStore.ts b/src/stores/queueStore.ts index 2d42ab4d5..c2173fe13 100644 --- a/src/stores/queueStore.ts +++ b/src/stores/queueStore.ts @@ -142,7 +142,15 @@ export class TaskItemImpl { this.taskType = taskType this.prompt = prompt this.status = status - this.outputs = outputs ?? {} + // Remove animated outputs from the outputs object + // outputs.animated is an array of boolean values that indicates if the images + // array in the result are animated or not. + // The queueStore does not use this information. + // It is part of the legacy API response. We should redesign the backend API. + // https://github.com/Comfy-Org/ComfyUI_frontend/issues/2739 + this.outputs = _.mapValues(outputs ?? {}, (nodeOutputs) => + _.omit(nodeOutputs, 'animated') + ) this.flatOutputs = flatOutputs ?? this.calculateFlatOutputs() } diff --git a/tests-ui/tests/store/queueStore.test.ts b/tests-ui/tests/store/queueStore.test.ts new file mode 100644 index 000000000..a0353fbf2 --- /dev/null +++ b/tests-ui/tests/store/queueStore.test.ts @@ -0,0 +1,42 @@ +// @ts-strict-ignore +import { TaskItemImpl } from '@/stores/queueStore' + +describe('TaskItemImpl', () => { + it('should remove animated property from outputs during construction', () => { + const taskItem = new TaskItemImpl( + 'History', + [0, 'prompt-id', {}, {}, []], + { status_str: 'success', messages: [] }, + { + 'node-1': { + images: [{ filename: 'test.png', type: 'output', subfolder: '' }], + animated: [false] + } + } + ) + + // Check that animated property was removed + expect('animated' in taskItem.outputs['node-1']).toBe(false) + + // Verify other output properties remain intact + expect(taskItem.outputs['node-1'].images).toBeDefined() + expect(taskItem.outputs['node-1'].images[0].filename).toBe('test.png') + }) + + it('should handle outputs without animated property', () => { + const taskItem = new TaskItemImpl( + 'History', + [0, 'prompt-id', {}, {}, []], + { status_str: 'success', messages: [] }, + { + 'node-1': { + images: [{ filename: 'test.png', type: 'output', subfolder: '' }] + } + } + ) + + // Verify outputs are preserved when no animated property exists + expect(taskItem.outputs['node-1'].images).toBeDefined() + expect(taskItem.outputs['node-1'].images[0].filename).toBe('test.png') + }) +})