import React, { useEffect } from 'react'; import { connect } from 'react-redux'; import { useNavigate, useParams, generatePath } from 'react-router-dom'; import ListItem from '@mui/material/ListItem'; import Paper from '@mui/material/Paper'; import { RoomsService } from 'api'; import { ScrollToBottomOnChanges, ThreePaneLayout, UserDisplay, VirtualList, AuthGuard } from 'components'; import { RoomsStateMessages, RoomsStateRooms, JoinedRooms, RoomsSelectors, RoomsTypes } from 'store'; import { RouteEnum } from 'types'; import OpenGames from './OpenGames'; import Messages from './Messages'; import SayMessage from './SayMessage'; import './Room.css'; // @TODO (3) const Room = (props) => { const { joined, rooms, messages } = props; const navigate = useNavigate(); const params = useParams(); const roomId = parseInt(params.roomId, 0); const room = rooms[roomId]; const roomMessages = messages[roomId]; const users = room.userList; useEffect(() => { if (!joined.find(({ roomId: id }) => id === roomId)) { navigate(generatePath(RouteEnum.SERVER)); } }, [joined]); const handleRoomSay = ({ message }) => { if (message) { RoomsService.roomSay(roomId, message); } } return (