import { useMemo } from 'react'; import { generatePath, useNavigate } from 'react-router-dom'; import Button from '@mui/material/Button'; import Table from '@mui/material/Table'; import TableBody from '@mui/material/TableBody'; import TableCell from '@mui/material/TableCell'; import TableHead from '@mui/material/TableHead'; import TableRow from '@mui/material/TableRow'; import { useWebClient } from '@app/hooks'; import { App, Enriched } from '@app/types'; import './Rooms.css'; interface RoomsProps { rooms: Record; joinedRooms: Enriched.Room[]; } const Rooms = ({ rooms, joinedRooms }: RoomsProps) => { const navigate = useNavigate(); const webClient = useWebClient(); const joinedRoomIds = useMemo( () => new Set(joinedRooms.map((room) => room.info.roomId)), [joinedRooms], ); const onClick = (roomId: number) => { if (joinedRoomIds.has(roomId)) { navigate(generatePath(App.RouteEnum.ROOM, { roomId: String(roomId) })); } else { webClient.request.session.joinRoom(roomId); } }; return (
Name Description Permissions Players Games {Object.values(rooms).map((room) => { const { description, gameCount, name, permissionlevel, playerCount, roomId } = room.info; return ( {name} {description} {permissionlevel} {playerCount} {gameCount} ); })}
); }; export default Rooms;