Skip to content

Commit 9fc3684

Browse files
committed
consolidate
1 parent fd57927 commit 9fc3684

1 file changed

Lines changed: 47 additions & 50 deletions

File tree

apps/sim/socket/handlers/operations.ts

Lines changed: 47 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,21 @@ const logger = createLogger('OperationsHandlers')
1919

2020
export function setupOperationsHandlers(socket: AuthenticatedSocket, roomManager: IRoomManager) {
2121
socket.on('workflow-operation', async (data) => {
22-
if (!roomManager.isReady()) {
23-
socket.emit('operation-forbidden', {
24-
type: 'ROOM_MANAGER_UNAVAILABLE',
25-
message: 'Realtime unavailable',
26-
})
27-
if (data?.operationId) {
28-
socket.emit('operation-failed', {
29-
operationId: data.operationId,
30-
error: 'Realtime unavailable',
31-
retryable: true,
32-
})
22+
const emitOperationError = (
23+
forbidden: { type: string; message: string; operation?: string; target?: string },
24+
failed?: { error: string; retryable?: boolean }
25+
) => {
26+
socket.emit('operation-forbidden', forbidden)
27+
if (failed && data?.operationId) {
28+
socket.emit('operation-failed', { operationId: data.operationId, ...failed })
3329
}
30+
}
31+
32+
if (!roomManager.isReady()) {
33+
emitOperationError(
34+
{ type: 'ROOM_MANAGER_UNAVAILABLE', message: 'Realtime unavailable' },
35+
{ error: 'Realtime unavailable', retryable: true }
36+
)
3437
return
3538
}
3639

@@ -42,43 +45,37 @@ export function setupOperationsHandlers(socket: AuthenticatedSocket, roomManager
4245
session = await roomManager.getUserSession(socket.id)
4346
} catch (error) {
4447
logger.error('Error loading session for workflow operation:', error)
45-
socket.emit('operation-forbidden', {
46-
type: 'ROOM_MANAGER_UNAVAILABLE',
47-
message: 'Realtime unavailable',
48-
})
49-
if (data?.operationId) {
50-
socket.emit('operation-failed', {
51-
operationId: data.operationId,
52-
error: 'Realtime unavailable',
53-
retryable: true,
54-
})
55-
}
48+
emitOperationError(
49+
{ type: 'ROOM_MANAGER_UNAVAILABLE', message: 'Realtime unavailable' },
50+
{ error: 'Realtime unavailable', retryable: true }
51+
)
5652
return
5753
}
5854

5955
if (!workflowId || !session) {
60-
socket.emit('operation-forbidden', {
61-
type: 'SESSION_ERROR',
62-
message: 'Session expired, please rejoin workflow',
63-
})
64-
if (data?.operationId) {
65-
socket.emit('operation-failed', { operationId: data.operationId, error: 'Session expired' })
66-
}
56+
emitOperationError(
57+
{ type: 'SESSION_ERROR', message: 'Session expired, please rejoin workflow' },
58+
{ error: 'Session expired' }
59+
)
6760
return
6861
}
6962

70-
const hasRoom = await roomManager.hasWorkflowRoom(workflowId)
63+
let hasRoom = false
64+
try {
65+
hasRoom = await roomManager.hasWorkflowRoom(workflowId)
66+
} catch (error) {
67+
logger.error('Error checking workflow room:', error)
68+
emitOperationError(
69+
{ type: 'ROOM_MANAGER_UNAVAILABLE', message: 'Realtime unavailable' },
70+
{ error: 'Realtime unavailable', retryable: true }
71+
)
72+
return
73+
}
7174
if (!hasRoom) {
72-
socket.emit('operation-forbidden', {
73-
type: 'ROOM_NOT_FOUND',
74-
message: 'Workflow room not found',
75-
})
76-
if (data?.operationId) {
77-
socket.emit('operation-failed', {
78-
operationId: data.operationId,
79-
error: 'Workflow room not found',
80-
})
81-
}
75+
emitOperationError(
76+
{ type: 'ROOM_NOT_FOUND', message: 'Workflow room not found' },
77+
{ error: 'Workflow room not found' }
78+
)
8279
return
8380
}
8481

@@ -111,15 +108,15 @@ export function setupOperationsHandlers(socket: AuthenticatedSocket, roomManager
111108
// Check permissions from cached role for all other operations
112109
if (!userPresence) {
113110
logger.warn(`User presence not found for socket ${socket.id}`)
114-
socket.emit('operation-forbidden', {
115-
type: 'SESSION_ERROR',
116-
message: 'User session not found',
117-
operation,
118-
target,
119-
})
120-
if (operationId) {
121-
socket.emit('operation-failed', { operationId, error: 'User session not found' })
122-
}
111+
emitOperationError(
112+
{
113+
type: 'SESSION_ERROR',
114+
message: 'User session not found',
115+
operation,
116+
target,
117+
},
118+
{ error: 'User session not found' }
119+
)
123120
return
124121
}
125122

@@ -131,7 +128,7 @@ export function setupOperationsHandlers(socket: AuthenticatedSocket, roomManager
131128
logger.warn(
132129
`User ${session.userId} (role: ${userPresence.role}) forbidden from ${operation} on ${target}`
133130
)
134-
socket.emit('operation-forbidden', {
131+
emitOperationError({
135132
type: 'INSUFFICIENT_PERMISSIONS',
136133
message: `${permissionCheck.reason} on '${target}'`,
137134
operation,

0 commit comments

Comments
 (0)