From 83cd1a8d7ae3853243cbcb8eb37aefa23f94ce07 Mon Sep 17 00:00:00 2001 From: JzoNg Date: Wed, 27 May 2026 21:06:36 +0800 Subject: [PATCH] fix(web): snippet restore --- .../header/__tests__/header-layouts.spec.tsx | 33 +++++++++++++++++++ .../workflow/header/header-in-restoring.tsx | 2 ++ 2 files changed, 35 insertions(+) diff --git a/web/app/components/workflow/header/__tests__/header-layouts.spec.tsx b/web/app/components/workflow/header/__tests__/header-layouts.spec.tsx index c02c60c749..9b76bc8e46 100644 --- a/web/app/components/workflow/header/__tests__/header-layouts.spec.tsx +++ b/web/app/components/workflow/header/__tests__/header-layouts.spec.tsx @@ -357,6 +357,39 @@ describe('Header layout components', () => { expect(mockEmitRestoreComplete).not.toHaveBeenCalled() expect(mockEmitWorkflowUpdate).not.toHaveBeenCalled() }) + + it('should restore snippet versions through snippet routes without emitting collaboration events', async () => { + const currentVersion = createCurrentVersion() + + renderWorkflowComponent( + , + { + initialStoreState: { + isRestoring: true, + showWorkflowVersionHistoryPanel: true, + backupDraft: createBackupDraft(), + currentVersion, + }, + hooksStoreProps: { + configsMap: { + flowType: FlowType.snippet, + flowId: 'snippet-1', + fileSettings: {}, + }, + }, + }, + ) + + fireEvent.click(screen.getByRole('button', { name: 'workflow.common.restore' })) + + await waitFor(() => { + expect(mockRestoreWorkflow).toHaveBeenCalledWith('/snippets/snippet-1/workflows/version-1/restore') + expect(mockHandleRefreshWorkflowDraft).toHaveBeenCalledTimes(1) + }) + expect(mockEmitRestoreIntent).not.toHaveBeenCalled() + expect(mockEmitRestoreComplete).not.toHaveBeenCalled() + expect(mockEmitWorkflowUpdate).not.toHaveBeenCalled() + }) }) describe('HeaderInHistory', () => { diff --git a/web/app/components/workflow/header/header-in-restoring.tsx b/web/app/components/workflow/header/header-in-restoring.tsx index a457c69652..bb3753ccfb 100644 --- a/web/app/components/workflow/header/header-in-restoring.tsx +++ b/web/app/components/workflow/header/header-in-restoring.tsx @@ -62,6 +62,8 @@ const HeaderInRestoring = ({ return '' if (configsMap.flowType === FlowType.ragPipeline) return `/rag/pipelines/${configsMap.flowId}/workflows/${versionId}/restore` + if (configsMap.flowType === FlowType.snippet) + return `/snippets/${configsMap.flowId}/workflows/${versionId}/restore` return `/apps/${configsMap.flowId}/workflows/${versionId}/restore` }, [configsMap?.flowId, configsMap?.flowType])