Skip to content

Commit 42fa5b2

Browse files
committed
consolidate
1 parent 8ccf454 commit 42fa5b2

3 files changed

Lines changed: 26 additions & 39 deletions

File tree

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

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { useUndoRedoStore } from '@/stores/undo-redo'
2222
import { useWorkflowDiffStore } from '@/stores/workflow-diff/store'
2323
import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
2424
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
25-
import { mergeSubblockState, normalizeName } from '@/stores/workflows/utils'
25+
import { filterNewEdges, mergeSubblockState, normalizeName } from '@/stores/workflows/utils'
2626
import { useWorkflowStore } from '@/stores/workflows/workflow/store'
2727
import type { BlockState, Loop, Parallel, Position } from '@/stores/workflows/workflow/types'
2828

@@ -242,17 +242,7 @@ export function useCollaborativeWorkflow() {
242242
case EDGES_OPERATIONS.BATCH_ADD_EDGES: {
243243
const { edges } = payload
244244
if (Array.isArray(edges) && edges.length > 0) {
245-
const currentEdges = workflowStore.edges
246-
const newEdges = edges.filter((edge: Edge) => {
247-
if (edge.source === edge.target) return false
248-
return !currentEdges.some(
249-
(e) =>
250-
e.source === edge.source &&
251-
e.sourceHandle === edge.sourceHandle &&
252-
e.target === edge.target &&
253-
e.targetHandle === edge.targetHandle
254-
)
255-
})
245+
const newEdges = filterNewEdges(edges, workflowStore.edges)
256246
if (newEdges.length > 0) {
257247
workflowStore.batchAddEdges(newEdges)
258248
}
@@ -989,22 +979,8 @@ export function useCollaborativeWorkflow() {
989979

990980
if (edges.length === 0) return false
991981

992-
const currentEdges = workflowStore.edges
993-
const newEdges = edges.filter((edge) => {
994-
if (edge.source === edge.target) return false
995-
return !currentEdges.some(
996-
(e) =>
997-
e.source === edge.source &&
998-
e.sourceHandle === edge.sourceHandle &&
999-
e.target === edge.target &&
1000-
e.targetHandle === edge.targetHandle
1001-
)
1002-
})
1003-
1004-
if (newEdges.length === 0) {
1005-
logger.debug('Skipping batch add edges - all edges already exist')
1006-
return false
1007-
}
982+
const newEdges = filterNewEdges(edges, workflowStore.edges)
983+
if (newEdges.length === 0) return false
1008984

1009985
const operationId = crypto.randomUUID()
1010986

apps/sim/stores/workflows/utils.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
import type { Edge } from 'reactflow'
22
import { v4 as uuidv4 } from 'uuid'
3+
4+
export function filterNewEdges(edgesToAdd: Edge[], currentEdges: Edge[]): Edge[] {
5+
return edgesToAdd.filter((edge) => {
6+
if (edge.source === edge.target) return false
7+
return !currentEdges.some(
8+
(e) =>
9+
e.source === edge.source &&
10+
e.sourceHandle === edge.sourceHandle &&
11+
e.target === edge.target &&
12+
e.targetHandle === edge.targetHandle
13+
)
14+
})
15+
}
16+
317
import { getBlockOutputs } from '@/lib/workflows/blocks/block-outputs'
418
import { getBlock } from '@/blocks'
519
import { normalizeName } from '@/executor/constants'

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

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ import { getBlock } from '@/blocks'
99
import type { SubBlockConfig } from '@/blocks/types'
1010
import { useWorkflowRegistry } from '@/stores/workflows/registry/store'
1111
import { useSubBlockStore } from '@/stores/workflows/subblock/store'
12-
import { getUniqueBlockName, mergeSubblockState, normalizeName } from '@/stores/workflows/utils'
12+
import {
13+
filterNewEdges,
14+
getUniqueBlockName,
15+
mergeSubblockState,
16+
normalizeName,
17+
} from '@/stores/workflows/utils'
1318
import type {
1419
Position,
1520
SubBlockState,
@@ -496,19 +501,11 @@ export const useWorkflowStore = create<WorkflowStore>()(
496501

497502
batchAddEdges: (edges: Edge[]) => {
498503
const currentEdges = get().edges
504+
const filtered = filterNewEdges(edges, currentEdges)
499505
const newEdges = [...currentEdges]
500506

501-
for (const edge of edges) {
502-
const connectionExists = newEdges.some(
503-
(e) =>
504-
e.source === edge.source &&
505-
e.sourceHandle === edge.sourceHandle &&
506-
e.target === edge.target &&
507-
e.targetHandle === edge.targetHandle
508-
)
509-
if (connectionExists) continue
507+
for (const edge of filtered) {
510508
if (wouldCreateCycle([...newEdges], edge.source, edge.target)) continue
511-
512509
newEdges.push({
513510
id: edge.id || crypto.randomUUID(),
514511
source: edge.source,

0 commit comments

Comments
 (0)