From a8cdf6964cd760dfc859ec55b6a8dfa35b277956 Mon Sep 17 00:00:00 2001 From: JzoNg Date: Sun, 29 Mar 2026 20:02:59 +0800 Subject: [PATCH] feat(web): test run button --- .../components/snippet-header/run-mode.tsx | 68 ++++++++++++++++--- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/web/app/components/snippets/components/snippet-header/run-mode.tsx b/web/app/components/snippets/components/snippet-header/run-mode.tsx index d18df6f23a..1ed61b39ea 100644 --- a/web/app/components/snippets/components/snippet-header/run-mode.tsx +++ b/web/app/components/snippets/components/snippet-header/run-mode.tsx @@ -1,8 +1,15 @@ 'use client' -import { RiPlayLargeLine } from '@remixicon/react' import * as React from 'react' +import { useCallback } from 'react' import { useTranslation } from 'react-i18next' +import { useWorkflowRun, useWorkflowStartRun } from '@/app/components/workflow/hooks' +import ShortcutsName from '@/app/components/workflow/shortcuts-name' +import { useStore } from '@/app/components/workflow/store' +import { WorkflowRunningStatus } from '@/app/components/workflow/types' +import { EVENT_WORKFLOW_STOP } from '@/app/components/workflow/variable-inspect/types' +import { useEventEmitterContextContext } from '@/context/event-emitter' +import { cn } from '@/utils/classnames' type RunModeProps = { text?: string @@ -12,16 +19,59 @@ const RunMode = ({ text, }: RunModeProps) => { const { t } = useTranslation('snippet') + const { handleWorkflowStartRunInWorkflow } = useWorkflowStartRun() + const { handleStopRun } = useWorkflowRun() + const workflowRunningData = useStore(s => s.workflowRunningData) + + const isRunning = workflowRunningData?.result.status === WorkflowRunningStatus.Running + + const handleStop = useCallback(() => { + handleStopRun(workflowRunningData?.task_id || '') + }, [handleStopRun, workflowRunningData?.task_id]) + + const { eventEmitter } = useEventEmitterContextContext() + eventEmitter?.useSubscription((v) => { + if (typeof v !== 'string' && v.type === EVENT_WORKFLOW_STOP) + handleStop() + }) return ( - +
+ + + {isRunning && ( + + )} +
) }