import React from "react"; import { Link, useLocation } from "react-router-dom"; import { Helmet } from "react-helmet"; import { PortalIcon, FlagIcon, ChatIcon } from "../../images/Images.tsx"; import Summary from "@components/Summary.tsx"; import Leaderboards from "@components/Leaderboards.tsx"; import Discussions from "@components/Discussions.tsx"; import ModMenu from "@components/ModMenu.tsx"; import { MapDiscussions, MapLeaderboard, MapSummary } from "@customTypes/Map.ts"; import { API } from "@api/Api.ts"; 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 = React.useCallback(async () => { const mapSummary = await API.get_map_summary(mapID); setMapSummaryData(mapSummary); }, [mapID]); const _fetch_map_leaderboards = React.useCallback(async () => { const mapLeaderboards = await API.get_map_leaderboard(mapID, "1"); setMapLeaderboardData(mapLeaderboards); }, [mapID]); const _fetch_map_discussions = React.useCallback(async () => { const mapDiscussions = await API.get_map_discussions(mapID); setMapDiscussionsData(mapDiscussions); }, [mapID]); React.useEffect(() => { _fetch_map_summary(); _fetch_map_leaderboards(); _fetch_map_discussions(); }, [ mapID, _fetch_map_discussions, _fetch_map_leaderboards, _fetch_map_summary, ]); 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;