diff --git a/web/app/components/workflow-app/hooks/use-workflow-run.ts b/web/app/components/workflow-app/hooks/use-workflow-run.ts index 8fd3b57ac6..29b2ecd674 100644 --- a/web/app/components/workflow-app/hooks/use-workflow-run.ts +++ b/web/app/components/workflow-app/hooks/use-workflow-run.ts @@ -215,21 +215,24 @@ export const useWorkflowRun = () => { const { setWorkflowRunningData, + setIsListening, } = workflowStore.getState() if (runMode === 'webhook') { + setIsListening(true) setWorkflowRunningData({ result: { - status: WorkflowRunningStatus.Listening, + status: WorkflowRunningStatus.Running, inputs_truncated: false, process_data_truncated: false, outputs_truncated: false, }, tracing: [], - resultText: 'Listening for webhook call...', + resultText: '', }) } else { + setIsListening(false) setWorkflowRunningData({ result: { status: WorkflowRunningStatus.Running, @@ -260,9 +263,15 @@ export const useWorkflowRun = () => { abortControllerRef.current = null } + const clearListeningState = () => { + const state = workflowStore.getState() + state.setIsListening(false) + } + const wrappedOnError = (params: any) => { clearAbortController() handleWorkflowFailed() + clearListeningState() if (onError) onError(params) @@ -270,6 +279,7 @@ export const useWorkflowRun = () => { const wrappedOnCompleted: IOtherOptions['onCompleted'] = async (hasError?: boolean, errorMessage?: string) => { clearAbortController() + clearListeningState() if (onCompleted) onCompleted(hasError, errorMessage) } @@ -289,6 +299,7 @@ export const useWorkflowRun = () => { onWorkflowStarted(params) }, onWorkflowFinished: (params) => { + clearListeningState() handleWorkflowFinished(params) if (onWorkflowFinished) @@ -468,9 +479,11 @@ export const useWorkflowRun = () => { }, tracing: [], }) + setIsListening(false) return } + setIsListening(false) handleStream( response, baseSseOptions.onData ?? noop, @@ -518,6 +531,7 @@ export const useWorkflowRun = () => { }, tracing: [], }) + setIsListening(false) } } @@ -561,7 +575,7 @@ export const useWorkflowRun = () => { abortControllerRef.current.abort() abortControllerRef.current = null - const { setWorkflowRunningData } = workflowStore.getState() + const { setWorkflowRunningData, setIsListening } = workflowStore.getState() setWorkflowRunningData({ result: { status: WorkflowRunningStatus.Stopped, @@ -572,6 +586,7 @@ export const useWorkflowRun = () => { tracing: [], resultText: '', }) + setIsListening(false) }, [workflowStore]) const handleRestoreFromPublishedWorkflow = useCallback((publishedWorkflow: VersionHistory) => { diff --git a/web/app/components/workflow/header/run-mode.tsx b/web/app/components/workflow/header/run-mode.tsx index 682e0ff435..43058f3e1f 100644 --- a/web/app/components/workflow/header/run-mode.tsx +++ b/web/app/components/workflow/header/run-mode.tsx @@ -28,9 +28,9 @@ const RunMode = ({ const { handleStopRun } = useWorkflowRun() const { validateBeforeRun } = useWorkflowRunValidation() const workflowRunningData = useStore(s => s.workflowRunningData) + const isListening = useStore(s => s.isListening) const status = workflowRunningData?.result.status - const isListening = status === WorkflowRunningStatus.Listening const isRunning = status === WorkflowRunningStatus.Running || isListening const dynamicOptions = useDynamicTestRunOptions() diff --git a/web/app/components/workflow/panel/record.tsx b/web/app/components/workflow/panel/record.tsx index bea17e9013..e9c677d235 100644 --- a/web/app/components/workflow/panel/record.tsx +++ b/web/app/components/workflow/panel/record.tsx @@ -5,11 +5,9 @@ import { useStore } from '../store' import { useWorkflowUpdate } from '../hooks' import { useHooksStore } from '../hooks-store' import { formatWorkflowRunIdentifier } from '../utils' -import { WorkflowRunningStatus } from '../types' const Record = () => { const historyWorkflowData = useStore(s => s.historyWorkflowData) - const workflowRunningData = useStore(s => s.workflowRunningData) const { handleUpdateWorkflowCanvas } = useWorkflowUpdate() const getWorkflowRunAndTraceUrl = useHooksStore(s => s.getWorkflowRunAndTraceUrl) @@ -22,9 +20,6 @@ const Record = () => { }) }, [handleUpdateWorkflowCanvas]) - const currentStatus = workflowRunningData?.result.status - const activeTab = currentStatus === WorkflowRunningStatus.Listening ? 'DETAIL' : undefined - return (