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());
|
|
}
|
|
},
|
|
};
|