import React from 'react'; import { Link, useLocation } from 'react-router-dom'; 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 '../types/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(undefined); const [mapLeaderboardData, setMapLeaderboardData] = React.useState(undefined); const [mapDiscussionsData, setMapDiscussionsData] = React.useState(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); 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 ( <> {isModerator && }

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