import React from 'react'; import { Routes, Route } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import { UserProfile } from '@customTypes/Profile'; import Sidebar from './components/Sidebar'; import './App.css'; import Profile from '@pages/Profile'; import Games from '@pages/Games'; import Maps from '@pages/Maps'; import User from '@pages/User'; import Homepage from '@pages/Homepage'; import UploadRunDialog from './components/UploadRunDialog'; import Rules from '@pages/Rules'; import About from '@pages/About'; import { Game } from '@customTypes/Game'; import { API } from './api/Api'; import Maplist from '@pages/Maplist'; import Rankings from '@pages/Rankings'; import { get_user_id_from_token, get_user_mod_from_token } from './utils/Jwt'; const App: React.FC = () => { const [token, setToken] = React.useState(undefined); const [profile, setProfile] = React.useState( undefined ); const [isModerator, setIsModerator] = React.useState(false); const [games, setGames] = React.useState([]); const [uploadRunDialog, setUploadRunDialog] = React.useState(false); const _fetch_token = async () => { const token = await API.get_token(); setToken(token); }; const _fetch_games = async () => { const games = await API.get_games(); setGames(games); }; const _set_profile = async (user_id?: string) => { if (user_id && token) { const user = await API.get_profile(token); setProfile(user); } }; React.useEffect(() => { if (token === undefined) { setProfile(undefined); setIsModerator(false); } else { setProfile({} as UserProfile); // placeholder before we call actual user profile _set_profile(get_user_id_from_token(token)); const modStatus = get_user_mod_from_token(token); if (modStatus) { setIsModerator(true); } else { setIsModerator(false); } } }, [token, _set_profile]); React.useEffect(() => { _fetch_token(); _fetch_games(); }, []); return ( <> LPHUB { setUploadRunDialog(false); if (updateProfile) { _set_profile(get_user_id_from_token(token)); } }} games={games} /> setUploadRunDialog(true)} /> } /> _set_profile(get_user_id_from_token(token))} /> } /> } /> } /> }> } /> } /> } /> }> ); }; export default App;