diff --git a/src/modules/room/RoomBanner.tsx b/src/modules/room/RoomBanner.tsx new file mode 100644 index 0000000..bff294b --- /dev/null +++ b/src/modules/room/RoomBanner.tsx @@ -0,0 +1,13 @@ +import { FC } from "react"; + +interface Props { + title: string; +} + +const RoomBanner: FC = ({ title }) => ( +
+

{title}

+
+); + +export default RoomBanner; diff --git a/src/modules/room/RoomChat.tsx b/src/modules/room/RoomChat.tsx index afe3479..887b2c4 100644 --- a/src/modules/room/RoomChat.tsx +++ b/src/modules/room/RoomChat.tsx @@ -6,6 +6,7 @@ import { RoomMembership, roomSetMembership, } from "modules/room/slice"; +import RoomBanner from "modules/room/RoomBanner"; import RoomChatForm from "modules/room/RoomChatForm"; import RoomChatHeader from "modules/room/RoomChatHeader"; import RoomChatMessageList from "modules/room/RoomChatMessageList"; @@ -13,29 +14,16 @@ import RoomDetails from "modules/room/RoomDetails"; interface Props { loginUserName: string; - room?: RoomState; + room: RoomState; } -const RoomChat: FC = ({ loginUserName, room }) => { - const dispatch = useDispatch(); - - useEffect(() => { - if (room !== undefined && room.membership === RoomMembership.Left) { - dispatch(roomSetMembership([room.name, RoomMembership.Joining])); - } - }); - +const RoomChatInner: FC = ({ loginUserName, room }) => { const [showDetails, setShowDetails] = useState(false); const toggleDetails = () => { setShowDetails(!showDetails); }; const header = ; - if (room === undefined || room.membership !== RoomMembership.Joined) { - return ( -
{header}
- ); - } let details; if (showDetails) { @@ -62,4 +50,20 @@ const RoomChat: FC = ({ loginUserName, room }) => { ); }; +const RoomChat: FC = ({ loginUserName, room }) => { + const dispatch = useDispatch(); + + useEffect(() => { + if (room.membership === RoomMembership.Left) { + dispatch(roomSetMembership([room.name, RoomMembership.Joining])); + } + }); + + if (room.membership !== RoomMembership.Joined) { + return ; + } + + return ; +}; + export default RoomChat; diff --git a/src/modules/room/RoomsPane.tsx b/src/modules/room/RoomsPane.tsx index 900aa9b..b71e4c8 100644 --- a/src/modules/room/RoomsPane.tsx +++ b/src/modules/room/RoomsPane.tsx @@ -6,6 +6,7 @@ import { Switch, Route } from "react-router-dom"; import { decode } from "modules/base64"; import { selectLogin } from "modules/login/slice"; import { RoomMap, selectAllRooms } from "modules/room/slice"; +import RoomBanner from "modules/room/RoomBanner"; import RoomChat from "modules/room/RoomChat"; import RoomList from "modules/room/RoomList"; @@ -21,10 +22,14 @@ interface UrlParams { const RoomChatPane: FC = ({ loginUserName, rooms }) => { const { roomId } = useParams(); - let room; - if (roomId !== undefined) { - const name = decode(roomId); - room = rooms[name]; + if (roomId === undefined) { + return ; + } + + const name = decode(roomId); + const room = rooms[name]; + if (room === undefined) { + return ; } return ;