dify/web/app/components/snippets/hooks/use-snippet-refresh-draft.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

54 lines
1.9 KiB
TypeScript

import type { WorkflowDataUpdater } from '@/app/components/workflow/types'
import type { SnippetInputField } from '@/models/snippet'
import type { SnippetWorkflow } from '@/types/snippet'
import { useCallback } from 'react'
import { useWorkflowUpdate } from '@/app/components/workflow/hooks'
import { useWorkflowStore } from '@/app/components/workflow/store'
import { fetchSnippetDraftWorkflow } from '@/service/use-snippet-workflows'
import { useSnippetDraftStore } from '../draft-store'
export const useSnippetRefreshDraft = (snippetId: string) => {
const workflowStore = useWorkflowStore()
const { handleUpdateWorkflowCanvas } = useWorkflowUpdate()
const handleRefreshWorkflowDraft = useCallback(
(onSuccess?: (draftWorkflow: SnippetWorkflow) => void) => {
const { setDraftUpdatedAt, setIsSyncingWorkflowDraft, setSyncWorkflowDraftHash } =
workflowStore.getState()
if (!snippetId) return
setIsSyncingWorkflowDraft(true)
fetchSnippetDraftWorkflow(snippetId)
.then((response) => {
if (!response) return
const inputFields = Array.isArray(response.input_fields)
? (response.input_fields as SnippetInputField[])
: []
handleUpdateWorkflowCanvas({
...response.graph,
nodes: response.graph?.nodes || [],
edges: response.graph?.edges || [],
viewport: response.graph?.viewport || { x: 0, y: 0, zoom: 1 },
} as WorkflowDataUpdater)
useSnippetDraftStore.setState({
inputFields,
})
setSyncWorkflowDraftHash(response.hash)
setDraftUpdatedAt(response.updated_at)
onSuccess?.(response)
})
.finally(() => {
setIsSyncingWorkflowDraft(false)
})
},
[handleUpdateWorkflowCanvas, snippetId, workflowStore],
)
return {
handleRefreshWorkflowDraft,
}
}