From a65d6d9127c3fa7f6a8ecaec5d1ffd1f47c2bc98 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Tue, 3 Sep 2024 00:08:53 +0300 Subject: refactor: port to typescript --- frontend/src/pages/Maps.tsx | 91 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 frontend/src/pages/Maps.tsx (limited to 'frontend/src/pages/Maps.tsx') diff --git a/frontend/src/pages/Maps.tsx b/frontend/src/pages/Maps.tsx new file mode 100644 index 0000000..707d865 --- /dev/null +++ b/frontend/src/pages/Maps.tsx @@ -0,0 +1,91 @@ +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 { + isModerator: boolean; +}; + +const Maps: React.FC = ({ 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(); + }, []); + + if (!mapSummaryData) { + return ( + <> + ); + } + + return ( + <> + {isModerator && } + +
+ +
+
+
+
+ + +
{mapSummaryData.map.map_name} +
+ + +
+ +
+ + + +
+ + {navState === 0 && } + {navState === 1 && } + {navState === 2 && _fetch_map_discussions()} />} +
+ + ); +}; + +export default Maps; -- cgit v1.2.3