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

Function setupSubblocksHandlers

apps/realtime/src/handlers/subblocks.ts:45–235  ·  view source on GitHub ↗
(socket: AuthenticatedSocket, roomManager: IRoomManager)

Source from the content-addressed store, hash-verified

43}
44
45export function setupSubblocksHandlers(socket: AuthenticatedSocket, roomManager: IRoomManager) {
46 socket.on('subblock-update', async (data) => {
47 const {
48 workflowId: payloadWorkflowId,
49 blockId,
50 subblockId,
51 value,
52 timestamp,
53 operationId,
54 } = data
55
56 if (!roomManager.isReady()) {
57 socket.emit('operation-forbidden', {
58 type: 'ROOM_MANAGER_UNAVAILABLE',
59 message: 'Realtime unavailable',
60 })
61 if (operationId) {
62 socket.emit('operation-failed', {
63 operationId,
64 error: 'Realtime unavailable',
65 retryable: true,
66 })
67 }
68 return
69 }
70
71 try {
72 const sessionWorkflowId = await roomManager.getWorkflowIdForSocket(socket.id)
73 const session = await roomManager.getUserSession(socket.id)
74
75 if (!sessionWorkflowId || !session) {
76 logger.debug(`Ignoring subblock update: socket not connected to any workflow room`, {
77 socketId: socket.id,
78 hasWorkflowId: !!sessionWorkflowId,
79 hasSession: !!session,
80 })
81 socket.emit('operation-forbidden', {
82 type: 'SESSION_ERROR',
83 message: 'Session expired, please rejoin workflow',
84 })
85 if (operationId) {
86 socket.emit('operation-failed', { operationId, error: 'Session expired' })
87 }
88 return
89 }
90
91 const workflowId = payloadWorkflowId || sessionWorkflowId
92
93 if (payloadWorkflowId && payloadWorkflowId !== sessionWorkflowId) {
94 logger.warn('Workflow ID mismatch in subblock update', {
95 payloadWorkflowId,
96 sessionWorkflowId,
97 socketId: socket.id,
98 })
99 if (operationId) {
100 socket.emit('operation-failed', {
101 operationId,
102 error: 'Workflow ID mismatch',

Callers 1

setupAllHandlersFunction · 0.90

Calls 15

assertWorkflowMutableFunction · 0.90
getErrorMessageFunction · 0.90
flushSubblockUpdateFunction · 0.85
onMethod · 0.80
debugMethod · 0.80
errorMethod · 0.80
isReadyMethod · 0.65
getUserSessionMethod · 0.65
warnMethod · 0.65
hasWorkflowRoomMethod · 0.65

Tested by

no test coverage detected