import React, { useEffect } from "react"; import { Link, useLocation, useNavigate, useParams } from "react-router-dom"; import { Helmet } from "react-helmet"; import { API } from "@api/Api"; import { Game } from "@customTypes/Game"; import { GameChapter, GamesChapters } from "@customTypes/Chapters"; const Maplist: React.FC = () => { const [game, setGame] = React.useState(null); const [catNum, setCatNum] = React.useState(0); const [id, setId] = React.useState(0); const [load, setLoad] = React.useState(false); const [currentlySelected, setCurrentlySelected] = React.useState(0); const [hasClicked, setHasClicked] = React.useState(false); const [gameChapters, setGameChapters] = React.useState(); const [curChapter, setCurChapter] = React.useState(); const [numChapters, setNumChapters] = React.useState(0); const [dropdownActive, setDropdownActive] = React.useState("none"); const params = useParams<{ id: string; chapter: string }>(); const location = useLocation(); const navigate = useNavigate(); function _update_currently_selected(catNum2: number) { setCurrentlySelected(catNum2); navigate("/games/" + game?.id + "?cat=" + catNum2); setHasClicked(true); } const _fetch_chapters = async (chapter_id: string) => { const chapters = await API.get_chapters(chapter_id); setCurChapter(chapters); }; const _handle_dropdown_click = () => { if (dropdownActive === "none") { setDropdownActive("block"); } else { setDropdownActive("none"); } }; // im sorry but im too lazy to fix this right now useEffect(() => { // gameID const gameId = parseFloat(params.id || ""); setId(gameId); // location query params const queryParams = new URLSearchParams(location.search); if (queryParams.get("chapter")) { let cat = parseFloat(queryParams.get("chapter") || ""); if (gameId === 2) { cat += 10; } _fetch_chapters(cat.toString()); } const _fetch_game = async () => { const games = await API.get_games(); const foundGame = games.find(game => game.id === gameId); // console.log(foundGame) if (foundGame) { setGame(foundGame); setLoad(false); } }; const _fetch_game_chapters = async () => { const games_chapters = await API.get_games_chapters(gameId.toString()); setGameChapters(games_chapters); setNumChapters(games_chapters.chapters.length); }; setLoad(true); _fetch_game(); _fetch_game_chapters(); }, [location.search]); useEffect(() => { const queryParams = new URLSearchParams(location.search); if (gameChapters !== undefined && !queryParams.get("chapter")) { _fetch_chapters(gameChapters!.chapters[0].id.toString()); } }, [gameChapters, location.search]); return (
LPHUB | Maplist
{load ? (
) : (

{game?.name}

{ game?.category_portals.find( obj => obj.category.id === catNum + 1 )?.portal_count }

portals

{game?.category_portals.map((cat, index) => ( ))}
{curChapter?.chapter.name.split(" - ")[0]}
{curChapter?.chapter.name.split(" - ")[1]}
\
{gameChapters?.chapters.map((chapter, i) => { return (
{ _fetch_chapters(chapter.id.toString()); _handle_dropdown_click(); }} > {chapter.name}
); })}
{curChapter?.maps.map((map, i) => { return (
{map.name}
{map.is_disabled ? map.category_portals[0].portal_count : map.category_portals.find( obj => obj.category.id === catNum + 1 )?.portal_count} portals
{[1, 2, 3, 4, 5].map((point) => (
))}
); })}
)}
); }; export default Maplist;