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 '@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(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, "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 ( <> {isModerator && }

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