| 
									
										
										
										
											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, | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |