Skip to main content
Glama
test-flow-widget.tsx1.94 kB
import { t } from 'i18next'; import { EditFlowOrViewDraftButton } from '@/app/builder/builder-header/flow-status/view-draft-or-edit-flow-button'; import { ChatDrawerSource, useBuilderStateContext, } from '@/app/builder/builder-hooks'; import { flowHooks } from '@/features/flows/lib/flow-hooks'; import { pieceSelectorUtils } from '@/features/pieces/lib/piece-selector-utils'; import { isNil, FlowTriggerType } from '@activepieces/shared'; import { AboveTriggerButton } from './above-trigger-button'; const TestFlowWidget = () => { const [setChatDrawerOpenSource, flowVersion, readonly, setRun] = useBuilderStateContext((state) => [ state.setChatDrawerOpenSource, state.flowVersion, state.readonly, state.setRun, ]); const triggerHasSampleData = flowVersion.trigger.type === FlowTriggerType.PIECE && !isNil(flowVersion.trigger.settings.sampleData?.lastTestDate); const isChatTrigger = pieceSelectorUtils.isChatTrigger( flowVersion.trigger.settings.pieceName, flowVersion.trigger.settings.triggerName, ); const { mutate: runFlow, isPending } = flowHooks.useTestFlow({ flowVersionId: flowVersion.id, onUpdateRun: (run) => { setRun(run, flowVersion); }, }); if (!flowVersion.valid) { return null; } if (isChatTrigger) { return ( <AboveTriggerButton onClick={() => { setChatDrawerOpenSource(ChatDrawerSource.TEST_FLOW); }} text={t('Open Chat')} loading={isPending} /> ); } if (readonly) { return ( <EditFlowOrViewDraftButton onCanvas={true}></EditFlowOrViewDraftButton> ); } return ( <AboveTriggerButton onClick={() => { runFlow(); }} text={t('Test Flow')} triggerHasNoSampleData={!triggerHasSampleData} loading={isPending} /> ); }; TestFlowWidget.displayName = 'TestFlowWidget'; export { TestFlowWidget };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server