mirror of
https://github.com/langgenius/dify.git
synced 2026-07-26 22:28:32 +08:00
59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
import type { WorkflowDataUpdater } from '@/app/components/workflow/types'
|
|
import { useCallback } from 'react'
|
|
import { useWorkflowUpdate } from '@/app/components/workflow/hooks'
|
|
import { useWorkflowStore } from '@/app/components/workflow/store'
|
|
import { fetchWorkflowDraft } from '@/service/workflow'
|
|
import { processNodesWithoutDataSource } from '../utils'
|
|
|
|
export const usePipelineRefreshDraft = () => {
|
|
const workflowStore = useWorkflowStore()
|
|
const { handleUpdateWorkflowCanvas } = useWorkflowUpdate()
|
|
|
|
const handleRefreshWorkflowDraft = useCallback(() => {
|
|
const {
|
|
pipelineId,
|
|
setSyncWorkflowDraftHash,
|
|
setIsSyncingWorkflowDraft,
|
|
setEnvironmentVariables,
|
|
setEnvSecrets,
|
|
setRagPipelineVariables,
|
|
} = workflowStore.getState()
|
|
setIsSyncingWorkflowDraft(true)
|
|
fetchWorkflowDraft(`/rag/pipelines/${pipelineId}/workflows/draft`)
|
|
.then((response) => {
|
|
const { nodes: processedNodes, viewport } = processNodesWithoutDataSource(
|
|
response.graph.nodes,
|
|
response.graph.viewport,
|
|
)
|
|
handleUpdateWorkflowCanvas({
|
|
...response.graph,
|
|
nodes: processedNodes,
|
|
viewport,
|
|
} 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,
|
|
) || [],
|
|
)
|
|
setRagPipelineVariables?.(response.rag_pipeline_variables || [])
|
|
})
|
|
.finally(() => setIsSyncingWorkflowDraft(false))
|
|
}, [handleUpdateWorkflowCanvas, workflowStore])
|
|
|
|
return {
|
|
handleRefreshWorkflowDraft,
|
|
}
|
|
}
|