mirror of
https://github.com/langgenius/dify.git
synced 2026-05-13 00:33:37 +08:00
Frontend: - Migrate deprecated imports: modal→dialog, toast→ui/toast, tooltip→tooltip-plus, portal-to-follow-elem→portal-to-follow-elem-plus, select→ui/select, confirm→alert-dialog - Replace next/* with @/next/* wrapper modules - Convert TypeScript enums to const objects (erasable-syntax-only) - Replace all `any` types with `unknown` or specific types in workflow types - Fix unused vars, react-hooks-extra, react-refresh/only-export-components - Extract InteractionMode to separate module, tool-block commands to commands.ts Backend: - Fix pyrefly errors: type narrowing, null guards, getattr patterns - Remove unused TYPE_CHECKING imports in LLM node - Add ignore_imports entries to .importlinter for dify_graph boundary violations Made-with: Cursor
46 lines
1.9 KiB
TypeScript
46 lines
1.9 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] = typeof env.value === 'string' ? env.value : JSON.stringify(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,
|
|
}
|
|
}
|