dify/web/app/components/snippets/hooks/use-snippet-start-run.ts
copilot-swe-agent[bot] fa74a4ed67
Merge deploy/dev into feat/evaluation - resolve merge conflicts
Agent-Logs-Url: https://github.com/langgenius/dify/sessions/489dd945-dfff-462a-9c76-d29fdaa55de2

Co-authored-by: FFXN <31929997+FFXN@users.noreply.github.com>
2026-04-17 08:29:13 +00:00

61 lines
1.7 KiB
TypeScript

import type { SnippetInputField } from '@/models/snippet'
import type { SnippetDraftRunPayload } from '@/types/snippet'
import { useCallback } from 'react'
import { useWorkflowInteractions } from '@/app/components/workflow/hooks'
import { useWorkflowStore } from '@/app/components/workflow/store'
import { WorkflowRunningStatus } from '@/app/components/workflow/types'
type UseSnippetStartRunOptions = {
handleRun: (params: SnippetDraftRunPayload) => void
inputFields: SnippetInputField[]
}
export const useSnippetStartRun = ({
handleRun,
inputFields,
}: UseSnippetStartRunOptions) => {
const workflowStore = useWorkflowStore()
const { handleCancelDebugAndPreviewPanel } = useWorkflowInteractions()
const handleWorkflowStartRunInWorkflow = useCallback(() => {
const {
workflowRunningData,
showDebugAndPreviewPanel,
setShowDebugAndPreviewPanel,
setShowInputsPanel,
setShowEnvPanel,
setShowGlobalVariablePanel,
} = workflowStore.getState()
if (workflowRunningData?.result.status === WorkflowRunningStatus.Running)
return
setShowEnvPanel(false)
setShowGlobalVariablePanel(false)
if (showDebugAndPreviewPanel) {
handleCancelDebugAndPreviewPanel()
return
}
setShowDebugAndPreviewPanel(true)
if (inputFields.length > 0) {
setShowInputsPanel(true)
return
}
setShowInputsPanel(false)
handleRun({ inputs: {} })
}, [handleCancelDebugAndPreviewPanel, handleRun, inputFields.length, workflowStore])
const handleStartWorkflowRun = useCallback(() => {
handleWorkflowStartRunInWorkflow()
}, [handleWorkflowStartRunInWorkflow])
return {
handleStartWorkflowRun,
handleWorkflowStartRunInWorkflow,
}
}