From 0d99bedd97fd4491d57ba8e078d7e8413165bc05 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Sat, 31 Jul 2021 22:14:26 -0400 Subject: [PATCH] Send RoomJoinRequest and RoomLeaveRequest. --- src/modules/room/message.ts | 54 ++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/src/modules/room/message.ts b/src/modules/room/message.ts index 01d85c6..6e0eec7 100644 --- a/src/modules/room/message.ts +++ b/src/modules/room/message.ts @@ -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); } }, };