diff --git a/browser_tests/tests/loadWorkflowInMedia.spec.ts-snapshots/no-workflow-webp-chromium-linux.png b/browser_tests/tests/loadWorkflowInMedia.spec.ts-snapshots/no-workflow-webp-chromium-linux.png index d12cffbe9d..d807d4c259 100644 Binary files a/browser_tests/tests/loadWorkflowInMedia.spec.ts-snapshots/no-workflow-webp-chromium-linux.png and b/browser_tests/tests/loadWorkflowInMedia.spec.ts-snapshots/no-workflow-webp-chromium-linux.png differ diff --git a/src/scripts/app.test.ts b/src/scripts/app.test.ts index ea63233331..7127f0bead 100644 --- a/src/scripts/app.test.ts +++ b/src/scripts/app.test.ts @@ -196,5 +196,25 @@ describe('ComfyApp', () => { mockNode ) }) + + it('should handle image files with non-workflow metadata by creating LoadImage node', async () => { + vi.mocked(getWorkflowDataFromFile).mockResolvedValue({ + Software: 'gnome-screenshot' + }) + + const mockNode = createMockNode() + vi.mocked(createNode).mockResolvedValue(mockNode) + + const imageFile = createTestFile('screenshot.png', 'image/png') + + await app.handleFile(imageFile) + + expect(createNode).toHaveBeenCalledWith(mockCanvas, 'LoadImage') + expect(pasteImageNode).toHaveBeenCalledWith( + mockCanvas, + expect.any(DataTransferItemList), + mockNode + ) + }) }) }) diff --git a/src/scripts/app.ts b/src/scripts/app.ts index f85be55073..09eaeab636 100644 --- a/src/scripts/app.ts +++ b/src/scripts/app.ts @@ -1513,7 +1513,9 @@ export class ComfyApp { async handleFile(file: File, openSource?: WorkflowOpenSource) { const fileName = file.name.replace(/\.\w+$/, '') // Strip file extension const workflowData = await getWorkflowDataFromFile(file) - if (_.isEmpty(workflowData)) { + const { workflow, prompt, parameters, templates } = workflowData ?? {} + + if (!(workflow || prompt || parameters || templates)) { if (file.type.startsWith('image')) { const transfer = new DataTransfer() transfer.items.add(file) @@ -1526,8 +1528,6 @@ export class ComfyApp { return } - const { workflow, prompt, parameters, templates } = workflowData - if ( templates && typeof templates === 'object' &&