Skip to content

Commit c6a8a5d

Browse files
author
waleed
committed
fix trigger config for triggers w/ multiple triggers
1 parent 29e4a98 commit c6a8a5d

File tree

1 file changed

+41
-12
lines changed
  • apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/components/sub-block/components/trigger-save

1 file changed

+41
-12
lines changed

apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/components/sub-block/components/trigger-save/trigger-save.tsx

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { useTriggerConfigAggregation } from '@/hooks/use-trigger-config-aggregat
1919
import { useWebhookManagement } from '@/hooks/use-webhook-management'
2020
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
2121
import { getTrigger, isTriggerValid } from '@/triggers'
22+
import { SYSTEM_SUBBLOCK_IDS } from '@/triggers/consts'
2223

2324
const 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

Comments
 (0)