dify/web/app/components/snippets/hooks/use-snippet-start-run.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

58 lines
1.7 KiB
TypeScript

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'
import { useSnippetDraftStore } from '../draft-store'
type UseSnippetStartRunOptions = {
handleRun: (params: SnippetDraftRunPayload) => void
}
export const useSnippetStartRun = ({ handleRun }: 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)
const currentInputFields = useSnippetDraftStore.getState().inputFields
if (currentInputFields.length > 0) {
setShowInputsPanel(true)
return
}
setShowInputsPanel(false)
handleRun({ inputs: {} })
}, [handleCancelDebugAndPreviewPanel, handleRun, workflowStore])
const handleStartWorkflowRun = useCallback(() => {
handleWorkflowStartRunInWorkflow()
}, [handleWorkflowStartRunInWorkflow])
return {
handleStartWorkflowRun,
handleWorkflowStartRunInWorkflow,
}
}