import { useEffect, useRef, useState, StrictMode } from "react"; import { CSSTransition } from "react-transition-group"; import styles from "./App.module.css"; import GamePanel from "./components/screens/GamePanel"; import GameSummary from "./components/screens/GameSummary"; import HomePage from "./components/screens/HomePage"; import Lobby from "./components/screens/Lobby"; import RoundSummary from "./components/screens/RoundSummary"; import ApiInfo from "./components/util/ApiInfo"; import { ERROR, IN_ROUND, POST_GAME, POST_ROUND, PRE_GAME, PRE_ROUND, } from "./domain/constants"; import { dispatch, useGameState } from "./domain/gameStore"; import Loading from "./components/util/Loading"; const needsHeaderFooter = { [PRE_GAME]: true, [PRE_ROUND]: true, [IN_ROUND]: false, [POST_ROUND]: false, [POST_GAME]: false, [ERROR]: true, }; export const Header = ({ show }) => { const transitionRef = useRef(null); return (

TerrAssumptions!

); }; export const Footer = ({ show }) => { const transitionRef = useRef(null); return (
); }; export const paramRouter = { join: dispatch.goToLobby, summary: gameId => dispatch.goToSummary(gameId, false), }; export const State = ({ show, children, setTransitioning }) => { const transitionRef = useRef(null); return ( setTransitioning(true)} onExited={() => setTransitioning(false)} >
{children}
); }; const App = () => { const [loading, setLoading] = useState(true); const [transitioning, setTransitioning] = useState(true); const gameState = useGameState(); useEffect(() => { const url = new URL(window.location.href); // eslint-disable-next-line no-restricted-syntax for (const [param, value] of url.searchParams.entries()) { const route = paramRouter[param]; if (route) { url.searchParams.delete(param); window.history.replaceState({}, document.title, url.href); route(value); break; } } setLoading(false); }, []); const needsHF = needsHeaderFooter[gameState]; return (
{!transitioning && gameState === IN_ROUND && }

Application encountered unrecoverable error, please refresh the page.

); }; export default App;