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