Skip to content

Commit ec70f6f

Browse files
improvement(trigger-subflow): reuse helper code (#1885)
1 parent 37fd21e commit ec70f6f

File tree

2 files changed

+19
-25
lines changed

2 files changed

+19
-25
lines changed

apps/sim/hooks/use-collaborative-workflow.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { Edge } from 'reactflow'
33
import { useSession } from '@/lib/auth-client'
44
import { createLogger } from '@/lib/logs/console/logger'
55
import { getBlockOutputs } from '@/lib/workflows/block-outputs'
6+
import { TriggerUtils } from '@/lib/workflows/triggers'
67
import { getBlock } from '@/blocks'
78
import { useSocket } from '@/contexts/socket-context'
89
import { useUndoRedo } from '@/hooks/use-undo-redo'
@@ -972,20 +973,17 @@ export function useCollaborativeWorkflow() {
972973
const newTriggerMode = !currentBlock.triggerMode
973974

974975
// When enabling trigger mode, check if block is inside a subflow
975-
if (newTriggerMode && currentBlock.data?.parentId) {
976-
const parent = workflowStore.blocks[currentBlock.data.parentId]
977-
if (parent && (parent.type === 'loop' || parent.type === 'parallel')) {
978-
// Dispatch custom event to show warning modal
979-
window.dispatchEvent(
980-
new CustomEvent('show-trigger-warning', {
981-
detail: {
982-
type: 'trigger_in_subflow',
983-
triggerName: 'trigger',
984-
},
985-
})
986-
)
987-
return
988-
}
976+
if (newTriggerMode && TriggerUtils.isBlockInSubflow(id, workflowStore.blocks)) {
977+
// Dispatch custom event to show warning modal
978+
window.dispatchEvent(
979+
new CustomEvent('show-trigger-warning', {
980+
detail: {
981+
type: 'trigger_in_subflow',
982+
triggerName: 'trigger',
983+
},
984+
})
985+
)
986+
return
989987
}
990988

991989
executeQueuedOperation(

apps/sim/stores/workflows/workflow/store.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { create } from 'zustand'
33
import { devtools } from 'zustand/middleware'
44
import { createLogger } from '@/lib/logs/console/logger'
55
import { getBlockOutputs } from '@/lib/workflows/block-outputs'
6+
import { TriggerUtils } from '@/lib/workflows/triggers'
67
import { getBlock } from '@/blocks'
78
import type { SubBlockConfig } from '@/blocks/types'
89
import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
@@ -1052,17 +1053,12 @@ export const useWorkflowStore = create<WorkflowStore>()(
10521053
const newTriggerMode = !block.triggerMode
10531054

10541055
// When switching TO trigger mode, check if block is inside a subflow
1055-
if (newTriggerMode && block.data?.parentId) {
1056-
const parent = get().blocks[block.data.parentId]
1057-
if (parent && (parent.type === 'loop' || parent.type === 'parallel')) {
1058-
logger.warn('Cannot enable trigger mode for block inside loop or parallel subflow', {
1059-
blockId: id,
1060-
blockType: block.type,
1061-
parentId: block.data.parentId,
1062-
parentType: parent.type,
1063-
})
1064-
return
1065-
}
1056+
if (newTriggerMode && TriggerUtils.isBlockInSubflow(id, get().blocks)) {
1057+
logger.warn('Cannot enable trigger mode for block inside loop or parallel subflow', {
1058+
blockId: id,
1059+
blockType: block.type,
1060+
})
1061+
return
10661062
}
10671063

10681064
// When switching TO trigger mode, remove all incoming connections

0 commit comments

Comments
 (0)