From 9a3ca0ce3babfa08cc4abb2f9cb1e848c9779379 Mon Sep 17 00:00:00 2001 From: yessenia Date: Tue, 21 Oct 2025 20:01:05 +0800 Subject: [PATCH] fix(trigger): check subscription removed --- .../subscription-list/selector-entry.tsx | 6 ++++++ .../workflow/nodes/trigger-plugin/default.ts | 15 ++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/web/app/components/plugins/plugin-detail-panel/subscription-list/selector-entry.tsx b/web/app/components/plugins/plugin-detail-panel/subscription-list/selector-entry.tsx index 9e637423af..e6685b8011 100644 --- a/web/app/components/plugins/plugin-detail-panel/subscription-list/selector-entry.tsx +++ b/web/app/components/plugins/plugin-detail-panel/subscription-list/selector-entry.tsx @@ -17,11 +17,15 @@ type SubscriptionTriggerButtonProps = { onClick?: () => void isOpen?: boolean className?: string + onSelect: (v: SimpleSubscription, callback?: () => void) => void } +export const INVALID_SUBSCRIPTION_ID = 'INVALID_SUBSCRIPTION_ID' + const SubscriptionTriggerButton: React.FC = ({ selectedId, onClick, + onSelect, isOpen = false, className, }) => { @@ -45,6 +49,7 @@ const SubscriptionTriggerButton: React.FC = ({ const selectedSubscription = subscriptions?.find(sub => sub.id === selectedId) if (!selectedSubscription) { + onSelect({ id: INVALID_SUBSCRIPTION_ID, name: '' } as SimpleSubscription) return { label: t('pluginTrigger.subscription.subscriptionRemoved'), color: 'red' as const, @@ -100,6 +105,7 @@ export const SubscriptionSelectorEntry = ({ selectedId, onSelect }: { selectedId={selectedId} onClick={() => setIsOpen(!isOpen)} isOpen={isOpen} + onSelect={onSelect} /> diff --git a/web/app/components/workflow/nodes/trigger-plugin/default.ts b/web/app/components/workflow/nodes/trigger-plugin/default.ts index f0d8fe1ec4..d81ab2c228 100644 --- a/web/app/components/workflow/nodes/trigger-plugin/default.ts +++ b/web/app/components/workflow/nodes/trigger-plugin/default.ts @@ -1,11 +1,12 @@ -import { BlockEnum, VarType } from '../../types' -import type { NodeDefault, Var } from '../../types' -import { genNodeMetaData } from '../../utils' -import type { PluginTriggerNodeType } from './types' -import { getMatchedSchemaType } from '../_base/components/variable/use-match-schema-type' +import { INVALID_SUBSCRIPTION_ID } from '@/app/components/plugins/plugin-detail-panel/subscription-list/selector-entry' import type { SchemaTypeDefinition } from '@/service/use-common' -import { type Field, type StructuredOutput, Type } from '../llm/types' +import type { NodeDefault, Var } from '../../types' +import { BlockEnum, VarType } from '../../types' +import { genNodeMetaData } from '../../utils' +import { getMatchedSchemaType } from '../_base/components/variable/use-match-schema-type' import { VarKindType } from '../_base/types' +import { type Field, type StructuredOutput, Type } from '../llm/types' +import type { PluginTriggerNodeType } from './types' const normalizeJsonSchemaType = (schema: any): string | undefined => { if (!schema) return undefined @@ -233,7 +234,7 @@ const nodeDefault: NodeDefault = { } = {}) { let errorMessage = '' - if (!payload.subscription_id) + if (!payload.subscription_id || payload.subscription_id === INVALID_SUBSCRIPTION_ID) errorMessage = t('workflow.nodes.triggerPlugin.subscriptionRequired') const {