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