@@ -19,6 +19,7 @@ import { useTriggerConfigAggregation } from '@/hooks/use-trigger-config-aggregat
1919import { useWebhookManagement } from '@/hooks/use-webhook-management'
2020import { useSubBlockStore } from '@/stores/workflows/subblock/store'
2121import { getTrigger , isTriggerValid } from '@/triggers'
22+ import { SYSTEM_SUBBLOCK_IDS } from '@/triggers/consts'
2223
2324const logger = createLogger ( 'TriggerSave' )
2425
@@ -48,9 +49,20 @@ export function TriggerSave({
4849 const [ isGeneratingTestUrl , setIsGeneratingTestUrl ] = useState ( false )
4950 const [ copied , setCopied ] = useState < string | null > ( null )
5051
52+ const effectiveTriggerId = useMemo ( ( ) => {
53+ if ( triggerId && isTriggerValid ( triggerId ) ) {
54+ return triggerId
55+ }
56+ const selectedTriggerId = useSubBlockStore . getState ( ) . getValue ( blockId , 'selectedTriggerId' )
57+ if ( typeof selectedTriggerId === 'string' && isTriggerValid ( selectedTriggerId ) ) {
58+ return selectedTriggerId
59+ }
60+ return triggerId
61+ } , [ blockId , triggerId ] )
62+
5163 const { webhookId, saveConfig, deleteConfig, isLoading } = useWebhookManagement ( {
5264 blockId,
53- triggerId,
65+ triggerId : effectiveTriggerId ,
5466 isPreview,
5567 } )
5668
@@ -59,7 +71,8 @@ export function TriggerSave({
5971 state . getValue ( blockId , 'triggerCredentials' )
6072 )
6173
62- const triggerDef = triggerId && isTriggerValid ( triggerId ) ? getTrigger ( triggerId ) : null
74+ const triggerDef =
75+ effectiveTriggerId && isTriggerValid ( effectiveTriggerId ) ? getTrigger ( effectiveTriggerId ) : null
6376
6477 const hasWebhookUrlDisplay =
6578 triggerDef ?. subBlocks . some ( ( sb ) => sb . id === 'webhookUrlDisplay' ) ?? false
@@ -75,7 +88,9 @@ export function TriggerSave({
7588 const missingFields : string [ ] = [ ]
7689
7790 triggerDef . subBlocks
78- . filter ( ( sb ) => sb . required && sb . mode === 'trigger' )
91+ . filter (
92+ ( sb ) => sb . required && sb . mode === 'trigger' && ! SYSTEM_SUBBLOCK_IDS . includes ( sb . id )
93+ )
7994 . forEach ( ( subBlock ) => {
8095 if ( subBlock . id === 'triggerCredentials' ) {
8196 if ( ! triggerCredentials ) {
@@ -100,7 +115,7 @@ export function TriggerSave({
100115 const requiredSubBlockIds = useMemo ( ( ) => {
101116 if ( ! triggerDef ) return [ ]
102117 return triggerDef . subBlocks
103- . filter ( ( sb ) => sb . required && sb . mode === 'trigger' )
118+ . filter ( ( sb ) => sb . required && sb . mode === 'trigger' && ! SYSTEM_SUBBLOCK_IDS . includes ( sb . id ) )
104119 . map ( ( sb ) => sb . id )
105120 } , [ triggerDef ] )
106121
@@ -145,7 +160,7 @@ export function TriggerSave({
145160 }
146161
147162 validationTimeoutRef . current = setTimeout ( ( ) => {
148- const aggregatedConfig = useTriggerConfigAggregation ( blockId , triggerId )
163+ const aggregatedConfig = useTriggerConfigAggregation ( blockId , effectiveTriggerId )
149164
150165 if ( aggregatedConfig ) {
151166 useSubBlockStore . getState ( ) . setValue ( blockId , 'triggerConfig' , aggregatedConfig )
@@ -158,14 +173,17 @@ export function TriggerSave({
158173 if ( validation . valid ) {
159174 setErrorMessage ( null )
160175 setSaveStatus ( 'idle' )
161- logger . debug ( 'Error cleared after validation passed' , { blockId, triggerId } )
176+ logger . debug ( 'Error cleared after validation passed' , {
177+ blockId,
178+ triggerId : effectiveTriggerId ,
179+ } )
162180 } else {
163181 const newErrorMessage = `Missing required fields: ${ validation . missingFields . join ( ', ' ) } `
164182 setErrorMessage ( ( prev ) => {
165183 if ( prev !== newErrorMessage ) {
166184 logger . debug ( 'Error message updated' , {
167185 blockId,
168- triggerId,
186+ triggerId : effectiveTriggerId ,
169187 missingFields : validation . missingFields ,
170188 } )
171189 return newErrorMessage
@@ -182,7 +200,14 @@ export function TriggerSave({
182200 clearTimeout ( validationTimeoutRef . current )
183201 }
184202 }
185- } , [ blockId , triggerId , triggerDef , requiredSubBlockValues , saveStatus , validateRequiredFields ] )
203+ } , [
204+ blockId ,
205+ effectiveTriggerId ,
206+ triggerDef ,
207+ requiredSubBlockValues ,
208+ saveStatus ,
209+ validateRequiredFields ,
210+ ] )
186211
187212 const handleSave = async ( ) => {
188213 if ( isPreview || disabled ) return
@@ -191,11 +216,15 @@ export function TriggerSave({
191216 setErrorMessage ( null )
192217
193218 try {
194- const aggregatedConfig = useTriggerConfigAggregation ( blockId , triggerId )
219+ const aggregatedConfig = useTriggerConfigAggregation ( blockId , effectiveTriggerId )
195220
196221 if ( aggregatedConfig ) {
197222 useSubBlockStore . getState ( ) . setValue ( blockId , 'triggerConfig' , aggregatedConfig )
198- logger . debug ( 'Stored aggregated trigger config' , { blockId, triggerId, aggregatedConfig } )
223+ logger . debug ( 'Stored aggregated trigger config' , {
224+ blockId,
225+ triggerId : effectiveTriggerId ,
226+ aggregatedConfig,
227+ } )
199228 }
200229
201230 const configToValidate = aggregatedConfig ?? triggerConfig
@@ -218,7 +247,7 @@ export function TriggerSave({
218247
219248 logger . info ( 'Trigger configuration saved successfully' , {
220249 blockId,
221- triggerId,
250+ triggerId : effectiveTriggerId ,
222251 hasWebhookId : ! ! webhookId ,
223252 } )
224253 } else {
@@ -287,7 +316,7 @@ export function TriggerSave({
287316
288317 logger . info ( 'Trigger configuration deleted successfully' , {
289318 blockId,
290- triggerId,
319+ triggerId : effectiveTriggerId ,
291320 } )
292321 } else {
293322 setDeleteStatus ( 'idle' )
0 commit comments