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(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 ( <> LPHUB | {mapSummaryData.map.map_name} {isModerator && }

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