Spaces:
Build error
Build error
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, | |
} | |
} | |