Browse Source

Define minimal user message middleware.

main
Titouan Rigoudy 4 years ago
parent
commit
f0d6ab004c
3 changed files with 44 additions and 4 deletions
  1. +2
    -0
      src/app/store.ts
  2. +1
    -4
      src/modules/room/message.ts
  3. +41
    -0
      src/modules/user/message.ts

+ 2
- 0
src/app/store.ts View File

@ -12,6 +12,7 @@ import { roomSocketMessageMiddleware } from "modules/room/message";
import roomReducer from "modules/room/slice";
import makeSocketMiddleware from "modules/socket/middleware";
import socketReducer from "modules/socket/slice";
import { userSocketMessageMiddleware } from "modules/user/message";
import userReducer from "modules/user/slice";
const rootReducer = combineReducers({
@ -35,6 +36,7 @@ export const store = configureStore({
makeSocketMiddleware([
loginSocketMessageMiddleware,
roomSocketMessageMiddleware,
userSocketMessageMiddleware,
])
),
});


+ 1
- 4
src/modules/room/message.ts View File

@ -1,9 +1,6 @@
import { AppDispatch } from "app/store";
import { roomMessage, roomGetAll, roomSetAll } from "modules/room/slice";
import {
SocketMessage,
SocketMessageMiddleware,
} from "modules/websocket/message";
import { SocketMessage, SocketMessageMiddleware } from "modules/socket/message";
function roomListRequest(): SocketMessage {
return {


+ 41
- 0
src/modules/user/message.ts View File

@ -0,0 +1,41 @@
import { AppDispatch } from "app/store";
import { userGetAll, userSetAll } from "modules/user/slice";
import { SocketMessage, SocketMessageMiddleware } from "modules/socket/message";
function userListRequest(): SocketMessage {
return {
variant: "UserListRequest",
fields: [],
};
}
function handleUserListResponse(dispatch: AppDispatch, outerFields: any[]) {
if (outerFields.length !== 1) {
console.log("UserListResponse has wrong number of fields:", outerFields);
return;
}
const { users } = outerFields[0];
if (users === undefined) {
console.log("UserListResponse field has wrong shape:", outerFields[0]);
return;
}
dispatch(userSetAll(users));
}
export const userSocketMessageMiddleware: SocketMessageMiddleware = {
handleMessage: (dispatch, { variant, fields }) => {
switch (variant) {
case "UserListResponse":
handleUserListResponse(dispatch, fields);
break;
}
},
handleAction: (send, action) => {
if (userGetAll.match(action)) {
send(userListRequest());
}
},
};

Loading…
Cancel
Save