import React, { Component } from "react"; import { connect } from "react-redux"; import { NavLink, withRouter, generatePath } from "react-router-dom"; import AppBar from "@material-ui/core/AppBar"; import Chip from "@material-ui/core/Chip"; import Toolbar from "@material-ui/core/Toolbar"; import * as _ from "lodash"; import { Selectors as RoomsSelectors } from "store/rooms"; import { Selectors as ServerSelectors } from "store/server"; import { Room, User } from "types"; import { AuthenticationService } from "AppShell/common/services"; import { RouteEnum } from "AppShell/common/types"; import "./Header.css"; import logo from "./logo.png"; class Header extends Component { componentDidUpdate(prevProps) { const currentRooms = this.props.joinedRooms; const previousRooms = prevProps.joinedRooms; if (currentRooms > previousRooms) { const { roomId } = _.difference(currentRooms, previousRooms)[0]; this.props.history.push(generatePath(RouteEnum.ROOM, { roomId })); } } render() { const { joinedRooms, server, state, user } = this.props; return (
{/*
*/} logo { AuthenticationService.isConnected(state) && (
) }
{ !!joinedRooms.length && ( ) }
) } } const Rooms = props => (
Rooms: { _.reduce(props.rooms, (rooms, { name, roomId}) => { rooms.push( ); return rooms; }, []) }
) interface HeaderProps { state: number; server: string; user: User; joinedRooms: Room[]; history: any; } const mapStateToProps = state => ({ state: ServerSelectors.getState(state), server: ServerSelectors.getName(state), user: ServerSelectors.getUser(state), joinedRooms: RoomsSelectors.getJoinedRooms(state) }); export default withRouter(connect(mapStateToProps)(Header));