Skip to content

Commit 25832ce

Browse files
committed
Split WebSocket error into client and server sources
1 parent 25a4d85 commit 25832ce

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

ui/frontend/reducers/websocket.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import { PayloadAction, createSlice } from '@reduxjs/toolkit';
22
import z from 'zod';
33

4-
import { createWebsocketResponseSchema, makeWebSocketMeta } from '../websocketActions';
4+
import {
5+
createWebsocketResponse,
6+
createWebsocketResponseSchema,
7+
makeWebSocketMeta,
8+
} from '../websocketActions';
59

610
type State = {
711
connected: boolean;
@@ -17,10 +21,12 @@ const websocketConnectedPayloadSchema = z.object({
1721
});
1822
type websocketConnectedPayload = z.infer<typeof websocketConnectedPayloadSchema>;
1923

20-
const websocketErrorPayloadSchema = z.object({
21-
error: z.string(),
22-
});
23-
type websocketErrorPayload = z.infer<typeof websocketErrorPayloadSchema>;
24+
const { action: websocketError, schema: websocketErrorSchema } = createWebsocketResponse(
25+
'websocket/error',
26+
z.object({
27+
error: z.string(),
28+
}),
29+
);
2430

2531
const slice = createSlice({
2632
name: 'websocket',
@@ -44,26 +50,28 @@ const slice = createSlice({
4450
state.connected = false;
4551
},
4652

47-
error: (state, action: PayloadAction<websocketErrorPayload>) => {
48-
state.error = action.payload.error;
53+
clientError: (state, action: PayloadAction<string>) => {
54+
state.error = action.payload;
4955
},
5056
},
57+
extraReducers: (builder) => {
58+
builder.addCase(websocketError, (state, action) => {
59+
state.error = action.payload.error;
60+
});
61+
},
5162
});
5263

5364
export const {
5465
connected: websocketConnected,
5566
disconnected: websocketDisconnected,
56-
error: websocketError,
67+
clientError: websocketClientError,
5768
} = slice.actions;
5869

70+
export { websocketError, websocketErrorSchema };
71+
5972
export const websocketConnectedSchema = createWebsocketResponseSchema(
6073
websocketConnected,
6174
websocketConnectedPayloadSchema,
6275
);
6376

64-
export const websocketErrorSchema = createWebsocketResponseSchema(
65-
websocketError,
66-
websocketErrorPayloadSchema,
67-
);
68-
6977
export default slice.reducer;

ui/frontend/websocketMiddleware.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import {
1010
wsExecuteStdoutSchema,
1111
} from './reducers/output/execute';
1212
import {
13+
websocketClientError,
1314
websocketConnected,
1415
websocketConnectedSchema,
1516
websocketDisconnected,
16-
websocketError,
1717
websocketErrorSchema,
1818
} from './reducers/websocket';
1919

@@ -126,7 +126,7 @@ export const websocketMiddleware =
126126
// We cannot get detailed information about the failure
127127
// https://stackoverflow.com/a/31003057/155423
128128
const error = 'Generic WebSocket Error';
129-
store.dispatch(websocketError({ error }));
129+
store.dispatch(websocketClientError(error));
130130
reportWebSocketError(error);
131131
});
132132

0 commit comments

Comments
 (0)