import React, { useEffect } from "react"; import { Link, useLocation, useNavigate, useParams } from "react-router-dom"; import "@css/Maplist.css"; 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 [category, setCategory] = 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(); }, []); useEffect(() => { const queryParams = new URLSearchParams(location.search); if (gameChapters != undefined && !queryParams.get("chapter")) { _fetch_chapters(gameChapters!.chapters[0].id.toString()); } }, [gameChapters]) return (
{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
{/* Difficulty: */}
})}
)}
); }; export default Maplist;