import React, { useEffect, useRef, useState } 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/GameState'; import { dispatch, useGameState } from './domain/gameStore'; const needsHeaderFooter = { [PRE_GAME]: true, [PRE_ROUND]: true, [IN_ROUND]: false, [POST_ROUND]: false, [POST_GAME]: false, [ERROR]: true }; const Header = ({ show }) => { const transitionRef = useRef(null); return ( TerrAssumptions! ); } const Footer = ({ show }) => { const transitionRef = useRef(null); return ( ); } const paramRouter = { join: dispatch.goToLobby, summary: gameId => dispatch.goToSummary(gameId, false), } const State = ({ show, children, setTransitioning }) => { const transitionRef = useRef(null); return ( setTransitioning(true)} onExited={() => setTransitioning(false)} > {children} ); } export default () => { const [transitioning, setTransitioning] = useState(true); const gameState = useGameState(); useEffect(() => { const url = new URL(window.location.href); for (let [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; } } }, []); const needsHF = needsHeaderFooter[gameState]; return ( {!transitioning && gameState === IN_ROUND && } Application encountered unrecoverable error, please refresh the page. ); };
TerrAssumptions!
Application encountered unrecoverable error, please refresh the page.