mirror of
https://github.com/langgenius/dify.git
synced 2026-05-08 11:47:35 +08:00
61 lines
1.7 KiB
TypeScript
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,
|
|
}
|
|
}
|