import React, { useEffect } from 'react'; import { Link, useLocation, useNavigate, useParams } from 'react-router-dom'; import { Helmet } from 'react-helmet'; 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 (
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
{/* Difficulty: */}
); })}
)}
); }; export default Maplist;