import React from 'react'; import { Link, useLocation } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import { PortalIcon, FlagIcon, ChatIcon } from '@images/Images'; import Summary from '@components/Summary'; import Leaderboards from '@components/Leaderboards'; import Discussions from '@components/Discussions'; import ModMenu from '@components/ModMenu'; import { MapDiscussions, MapLeaderboard, MapSummary } from '@customTypes/Map'; import { API } from '@api/Api'; import '@css/Maps.css'; interface MapProps { token?: string; isModerator: boolean; } const Maps: React.FC = ({ token, isModerator }) => { const [selectedRun, setSelectedRun] = React.useState(0); const [mapSummaryData, setMapSummaryData] = React.useState< MapSummary | undefined >(undefined); const [mapLeaderboardData, setMapLeaderboardData] = React.useState< MapLeaderboard | undefined >(undefined); const [mapDiscussionsData, setMapDiscussionsData] = React.useState< MapDiscussions | undefined >(undefined); const [navState, setNavState] = React.useState(0); const location = useLocation(); const mapID = location.pathname.split('/')[2]; const _fetch_map_summary = async () => { const mapSummary = await API.get_map_summary(mapID); setMapSummaryData(mapSummary); }; const _fetch_map_leaderboards = async () => { const mapLeaderboards = await API.get_map_leaderboard(mapID, '1'); setMapLeaderboardData(mapLeaderboards); }; const _fetch_map_discussions = async () => { const mapDiscussions = await API.get_map_discussions(mapID); setMapDiscussionsData(mapDiscussions); }; React.useEffect(() => { _fetch_map_summary(); _fetch_map_leaderboards(); _fetch_map_discussions(); }, [mapID]); if (!mapSummaryData) { // loading placeholder return ( <>
); } return ( <> LPHUB | {mapSummaryData.map.map_name} {isModerator && ( )}

{mapSummaryData.map.map_name}
{navState === 0 && ( )} {navState === 1 && } {navState === 2 && ( _fetch_map_discussions()} /> )}
); }; export default Maps;