Browse Source

Send RoomJoinRequest and RoomLeaveRequest.

main
Titouan Rigoudy 4 years ago
parent
commit
0d99bedd97
1 changed files with 39 additions and 15 deletions
  1. +39
    -15
      src/modules/room/message.ts

+ 39
- 15
src/modules/room/message.ts View File

@ -3,26 +3,14 @@ import {
RoomMembership,
RoomMessagePayload,
RoomState,
roomGetAll,
roomReceiveMessage,
roomSendMessage,
roomGetAll,
roomSetMembership,
roomSetAll,
} from "modules/room/slice";
import { SocketMessage, SocketMessageMiddleware } from "modules/socket/message";
function roomListRequest(): SocketMessage {
return "RoomListRequest";
}
function roomMessageRequest({ roomName, message }: RoomMessagePayload) {
return {
RoomMessageRequest: {
room_name: roomName,
message,
},
};
}
function convertMembership(membership: string): RoomMembership {
switch (membership) {
case "NonMember":
@ -87,8 +75,42 @@ function handleRoomMessageResponse(dispatch: AppDispatch, response) {
);
}
function roomListRequest(): SocketMessage {
return "RoomListRequest";
}
function roomMessageRequest({ roomName, message }: RoomMessagePayload) {
return {
RoomMessageRequest: {
room_name: roomName,
message,
},
};
}
const roomJoinRequest = (name: string) => ({
RoomJoinRequest: name,
});
const roomLeaveRequest = (name: string) => ({
RoomLeaveRequest: name,
});
function handleSetMembershipAction(
send: SocketMessageSender,
[name, membership]: [string, RoomMembership]
) {
switch (membership) {
case RoomMembership.Joining:
send(roomJoinRequest(name));
break;
case RoomMembership.Leaving:
send(roomLeaveRequest(name));
break;
}
}
export const roomSocketMessageMiddleware: SocketMessageMiddleware = {
// TODO: Adapt to new response format.
handleMessage: (dispatch, message) => {
if ("RoomListResponse" in message) {
handleRoomListResponse(dispatch, message["RoomListResponse"]);
@ -102,6 +124,8 @@ export const roomSocketMessageMiddleware: SocketMessageMiddleware = {
send(roomListRequest());
} else if (roomSendMessage.match(action)) {
send(roomMessageRequest(action.payload));
} else if (roomSetMembership.match(action)) {
handleSetMembershipAction(send, action.payload);
}
},
};

Loading…
Cancel
Save