dify/web/app/components/rag-pipeline/hooks/use-pipeline-refresh-draft.ts

35 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-05-07 16:30:24 +08:00
import { useCallback } from 'react'
2025-05-16 17:47:08 +08:00
import { useWorkflowStore } from '@/app/components/workflow/store'
import { fetchWorkflowDraft } from '@/service/workflow'
import type { WorkflowDataUpdater } from '@/app/components/workflow/types'
import { useWorkflowUpdate } from '@/app/components/workflow/hooks'
2025-05-07 16:30:24 +08:00
2025-05-09 15:53:31 +08:00
export const usePipelineRefreshDraft = () => {
2025-05-16 17:47:08 +08:00
const workflowStore = useWorkflowStore()
const { handleUpdateWorkflowCanvas } = useWorkflowUpdate()
2025-05-07 16:30:24 +08:00
const handleRefreshWorkflowDraft = useCallback(() => {
2025-05-16 17:47:08 +08:00
const {
pipelineId,
setSyncWorkflowDraftHash,
setIsSyncingWorkflowDraft,
setEnvironmentVariables,
setEnvSecrets,
} = workflowStore.getState()
setIsSyncingWorkflowDraft(true)
fetchWorkflowDraft(`/rag/pipelines/${pipelineId}/workflows/draft`).then((response) => {
handleUpdateWorkflowCanvas(response.graph as WorkflowDataUpdater)
setSyncWorkflowDraftHash(response.hash)
setEnvSecrets((response.environment_variables || []).filter(env => env.value_type === 'secret').reduce((acc, env) => {
acc[env.id] = env.value
return acc
}, {} as Record<string, string>))
setEnvironmentVariables(response.environment_variables?.map(env => env.value_type === 'secret' ? { ...env, value: '[__HIDDEN__]' } : env) || [])
}).finally(() => setIsSyncingWorkflowDraft(false))
}, [handleUpdateWorkflowCanvas, workflowStore])
2025-05-07 16:30:24 +08:00
return {
handleRefreshWorkflowDraft,
}
}