From 8c4e6b962f73948166fa21ec116bdc6f7ac8fa17 Mon Sep 17 00:00:00 2001 From: JzoNg Date: Tue, 2 Jun 2026 21:08:43 +0800 Subject: [PATCH] fix(web): refresh histories after snippet saved --- .../components/hooks/__tests__/use-snippet-publish.spec.ts | 7 +++++++ .../snippets/components/hooks/use-snippet-publish.ts | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/web/app/components/snippets/components/hooks/__tests__/use-snippet-publish.spec.ts b/web/app/components/snippets/components/hooks/__tests__/use-snippet-publish.spec.ts index 801c86c6243..37a06160434 100644 --- a/web/app/components/snippets/components/hooks/__tests__/use-snippet-publish.spec.ts +++ b/web/app/components/snippets/components/hooks/__tests__/use-snippet-publish.spec.ts @@ -5,6 +5,7 @@ import { useSnippetPublish } from '../use-snippet-publish' const mockMutateAsync = vi.fn() const mockSetPublishedAt = vi.fn() const mockSetQueryData = vi.fn() +const mockResetWorkflowVersionHistory = vi.fn() const mockHandleCheckBeforePublish = vi.fn<() => Promise>() let isPending = false @@ -22,6 +23,10 @@ vi.mock('@tanstack/react-query', () => ({ }), })) +vi.mock('@/service/use-workflow', () => ({ + useResetWorkflowVersionHistory: () => mockResetWorkflowVersionHistory, +})) + vi.mock('@/service/use-snippet-workflows', () => ({ usePublishSnippetWorkflowMutation: () => ({ mutateAsync: mockMutateAsync, @@ -71,6 +76,7 @@ describe('useSnippetPublish', () => { const updateSnippetDetail = setQueryDataCall![1] as (old: { is_published: boolean }) => { is_published: boolean } expect(updateSnippetDetail({ is_published: false })).toEqual({ is_published: true }) expect(mockSetPublishedAt).toHaveBeenCalledWith(1_712_345_678) + expect(mockResetWorkflowVersionHistory).toHaveBeenCalledTimes(1) expect(toast.success).toHaveBeenCalledWith('snippet.saveSuccess') }) @@ -89,6 +95,7 @@ describe('useSnippetPublish', () => { expect(mockMutateAsync).not.toHaveBeenCalled() expect(mockSetQueryData).not.toHaveBeenCalled() expect(mockSetPublishedAt).not.toHaveBeenCalled() + expect(mockResetWorkflowVersionHistory).not.toHaveBeenCalled() expect(toast.success).not.toHaveBeenCalled() }) diff --git a/web/app/components/snippets/components/hooks/use-snippet-publish.ts b/web/app/components/snippets/components/hooks/use-snippet-publish.ts index 2ae653c92c9..4096ca74fbe 100644 --- a/web/app/components/snippets/components/hooks/use-snippet-publish.ts +++ b/web/app/components/snippets/components/hooks/use-snippet-publish.ts @@ -7,6 +7,7 @@ import { useChecklistBeforePublish } from '@/app/components/workflow/hooks/use-c import { useWorkflowStore } from '@/app/components/workflow/store' import { consoleQuery } from '@/service/client' import { usePublishSnippetWorkflowMutation } from '@/service/use-snippet-workflows' +import { useResetWorkflowVersionHistory } from '@/service/use-workflow' type UseSnippetPublishOptions = { snippetId: string @@ -19,6 +20,7 @@ export const useSnippetPublish = ({ const workflowStore = useWorkflowStore() const queryClient = useQueryClient() const publishSnippetMutation = usePublishSnippetWorkflowMutation(snippetId) + const resetWorkflowVersionHistory = useResetWorkflowVersionHistory() const { handleCheckBeforePublish } = useChecklistBeforePublish() const handlePublish = useCallback(async () => { @@ -39,6 +41,7 @@ export const useSnippetPublish = ({ old => old ? { ...old, is_published: true } : old, ) workflowStore.getState().setPublishedAt(publishedWorkflow.created_at) + resetWorkflowVersionHistory() toast.success(t('saveSuccess')) return true } @@ -46,7 +49,7 @@ export const useSnippetPublish = ({ toast.error(error instanceof Error ? error.message : t('publishFailed')) return false } - }, [handleCheckBeforePublish, publishSnippetMutation, queryClient, snippetId, t, workflowStore]) + }, [handleCheckBeforePublish, publishSnippetMutation, queryClient, resetWorkflowVersionHistory, snippetId, t, workflowStore]) return { handlePublish,