// eslint-disable-next-line import React, { Component } from "react"; import { connect } from 'react-redux'; import { generatePath, useNavigate } from 'react-router-dom'; import ListItem from '@mui/material/ListItem'; import Paper from '@mui/material/Paper'; import { AuthGuard, ThreePaneLayout, UserDisplay, VirtualList } from 'components'; import { useReduxEffect } from 'hooks'; import { RoomsSelectors, RoomsTypes, ServerSelectors } from 'store'; import { Room, RouteEnum, User } from 'types'; import Rooms from './Rooms'; import Layout from 'containers/Layout/Layout'; import './Server.css'; const Server = ({ message, rooms, joinedRooms, users }: ServerProps) => { const navigate = useNavigate(); useReduxEffect((action: any) => { const roomId = action.roomInfo.roomId.toString(); navigate(generatePath(RouteEnum.ROOM, { roomId })); }, RoomsTypes.JOIN_ROOM, []); return ( )} bottom={(
)} side={(
Users connected to server: {users.length}
users[index].name } items={ users.map(user => ( )) } />
)} /> ); } interface ServerProps { message: string; rooms: Room[]; joinedRooms: Room[]; users: User[]; } const mapStateToProps = state => ({ message: ServerSelectors.getMessage(state), rooms: RoomsSelectors.getRooms(state), joinedRooms: RoomsSelectors.getJoinedRooms(state), users: ServerSelectors.getUsers(state) }); export default connect(mapStateToProps)(Server);