MCPcopy
hub / github.com/simstudioai/sim / handleWorkflowOperation

Function handleWorkflowOperation

apps/sim/hooks/use-collaborative-workflow.ts:202–526  ·  view source on GitHub ↗
(data: any)

Source from the content-addressed store, hash-verified

200
201 useEffect(() => {
202 const handleWorkflowOperation = (data: any) => {
203 const { operation, target, payload, userId, metadata } = data
204
205 if (isApplyingRemoteChange.current) return
206
207 // Filter broadcasts by workflowId to prevent cross-workflow updates
208 if (metadata?.workflowId && metadata.workflowId !== activeWorkflowId) {
209 logger.debug('Ignoring workflow operation for different workflow', {
210 broadcastWorkflowId: metadata.workflowId,
211 activeWorkflowId,
212 })
213 return
214 }
215
216 logger.info(`Received ${operation} on ${target} from user ${userId}`)
217
218 // Apply the operation to local state
219 isApplyingRemoteChange.current = true
220
221 try {
222 if (target === OPERATION_TARGETS.BLOCK) {
223 switch (operation) {
224 case BLOCK_OPERATIONS.UPDATE_NAME:
225 useWorkflowStore.getState().updateBlockName(payload.id, payload.name)
226 break
227 case BLOCK_OPERATIONS.UPDATE_ADVANCED_MODE:
228 useWorkflowStore.getState().setBlockAdvancedMode(payload.id, payload.advancedMode)
229 break
230 case BLOCK_OPERATIONS.UPDATE_CANONICAL_MODE:
231 useWorkflowStore
232 .getState()
233 .setBlockCanonicalMode(payload.id, payload.canonicalId, payload.canonicalMode)
234 break
235 }
236 } else if (target === OPERATION_TARGETS.BLOCKS) {
237 switch (operation) {
238 case BLOCKS_OPERATIONS.BATCH_UPDATE_POSITIONS: {
239 const { updates } = payload
240 if (Array.isArray(updates)) {
241 useWorkflowStore.getState().batchUpdatePositions(updates)
242 }
243 break
244 }
245 }
246 } else if (target === OPERATION_TARGETS.SUBBLOCK) {
247 switch (operation) {
248 case SUBBLOCK_OPERATIONS.BATCH_UPDATE: {
249 const { updates } = payload
250 if (Array.isArray(updates)) {
251 updates.forEach(
252 (update: { blockId: string; subblockId: string; value: unknown }) => {
253 useSubBlockStore
254 .getState()
255 .setValue(update.blockId, update.subblockId, update.value)
256 useWorkflowStore
257 .getState()
258 .syncDynamicHandleSubblockValue(
259 update.blockId,

Callers

nothing calls this directly

Calls 6

filterValidEdgesFunction · 0.90
filterNewEdgesFunction · 0.90
debugMethod · 0.80
infoMethod · 0.80
addVariableMethod · 0.80
errorMethod · 0.80

Tested by

no test coverage detected