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, RoomMembership,
RoomMessagePayload, RoomMessagePayload,
RoomState, RoomState,
roomGetAll,
roomReceiveMessage, roomReceiveMessage,
roomSendMessage, roomSendMessage,
roomGetAll,
roomSetMembership,
roomSetAll, roomSetAll,
} from "modules/room/slice"; } from "modules/room/slice";
import { SocketMessage, SocketMessageMiddleware } from "modules/socket/message"; 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 { function convertMembership(membership: string): RoomMembership {
switch (membership) { switch (membership) {
case "NonMember": 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 = { export const roomSocketMessageMiddleware: SocketMessageMiddleware = {
// TODO: Adapt to new response format.
handleMessage: (dispatch, message) => { handleMessage: (dispatch, message) => {
if ("RoomListResponse" in message) { if ("RoomListResponse" in message) {
handleRoomListResponse(dispatch, message["RoomListResponse"]); handleRoomListResponse(dispatch, message["RoomListResponse"]);
@ -102,6 +124,8 @@ export const roomSocketMessageMiddleware: SocketMessageMiddleware = {
send(roomListRequest()); send(roomListRequest());
} else if (roomSendMessage.match(action)) { } else if (roomSendMessage.match(action)) {
send(roomMessageRequest(action.payload)); send(roomMessageRequest(action.payload));
} else if (roomSetMembership.match(action)) {
handleSetMembershipAction(send, action.payload);
} }
}, },
}; };

Loading…
Cancel
Save