Spaces:
				
			
			
	
			
			
		Paused
		
	
	
	
			
			
	
	
	
	
		
		
		Paused
		
	| import { useCallback } from 'react' | |
| import { useStoreApi } from 'reactflow' | |
| import { useWorkflowStore } from '../store' | |
| import { | |
| BlockEnum, | |
| WorkflowRunningStatus, | |
| } from '../types' | |
| import { | |
| useIsChatMode, | |
| useNodesSyncDraft, | |
| useWorkflowInteractions, | |
| useWorkflowRun, | |
| } from './index' | |
| import { useFeaturesStore } from '@/app/components/base/features/hooks' | |
| export const useWorkflowStartRun = () => { | |
| const store = useStoreApi() | |
| const workflowStore = useWorkflowStore() | |
| const featuresStore = useFeaturesStore() | |
| const isChatMode = useIsChatMode() | |
| const { handleCancelDebugAndPreviewPanel } = useWorkflowInteractions() | |
| const { handleRun } = useWorkflowRun() | |
| const { doSyncWorkflowDraft } = useNodesSyncDraft() | |
| const handleWorkflowStartRunInWorkflow = useCallback(async () => { | |
| const { | |
| workflowRunningData, | |
| } = workflowStore.getState() | |
| if (workflowRunningData?.result.status === WorkflowRunningStatus.Running) | |
| return | |
| const { getNodes } = store.getState() | |
| const nodes = getNodes() | |
| const startNode = nodes.find(node => node.data.type === BlockEnum.Start) | |
| const startVariables = startNode?.data.variables || [] | |
| const fileSettings = featuresStore!.getState().features.file | |
| const { | |
| showDebugAndPreviewPanel, | |
| setShowDebugAndPreviewPanel, | |
| setShowInputsPanel, | |
| setShowEnvPanel, | |
| } = workflowStore.getState() | |
| setShowEnvPanel(false) | |
| if (showDebugAndPreviewPanel) { | |
| handleCancelDebugAndPreviewPanel() | |
| return | |
| } | |
| if (!startVariables.length && !fileSettings?.image?.enabled) { | |
| await doSyncWorkflowDraft() | |
| handleRun({ inputs: {}, files: [] }) | |
| setShowDebugAndPreviewPanel(true) | |
| setShowInputsPanel(false) | |
| } | |
| else { | |
| setShowDebugAndPreviewPanel(true) | |
| setShowInputsPanel(true) | |
| } | |
| }, [store, workflowStore, featuresStore, handleCancelDebugAndPreviewPanel, handleRun, doSyncWorkflowDraft]) | |
| const handleWorkflowStartRunInChatflow = useCallback(async () => { | |
| const { | |
| showDebugAndPreviewPanel, | |
| setShowDebugAndPreviewPanel, | |
| setHistoryWorkflowData, | |
| setShowEnvPanel, | |
| setShowChatVariablePanel, | |
| } = workflowStore.getState() | |
| setShowEnvPanel(false) | |
| setShowChatVariablePanel(false) | |
| if (showDebugAndPreviewPanel) | |
| handleCancelDebugAndPreviewPanel() | |
| else | |
| setShowDebugAndPreviewPanel(true) | |
| setHistoryWorkflowData(undefined) | |
| }, [workflowStore, handleCancelDebugAndPreviewPanel]) | |
| const handleStartWorkflowRun = useCallback(() => { | |
| if (!isChatMode) | |
| handleWorkflowStartRunInWorkflow() | |
| else | |
| handleWorkflowStartRunInChatflow() | |
| }, [isChatMode, handleWorkflowStartRunInWorkflow, handleWorkflowStartRunInChatflow]) | |
| return { | |
| handleStartWorkflowRun, | |
| handleWorkflowStartRunInWorkflow, | |
| handleWorkflowStartRunInChatflow, | |
| } | |
| } | |
