import React, { useState } from "react"; import type { GameState } from "../gameState"; import "./StartGame.css"; import { Play } from "./Play" type StartGameProps = { gameState: GameState | undefined; setGameState(newGameState: GameState): void; } /** * Allows the players to enter their name. A name is required for both players. They can't have the same names. */ export function StartGame({gameState, setGameState }: StartGameProps) { const [errorMessage, setErrorMessage] = useState(""); const [playerOne, setPlayerOne] = useState(""); const [playerTwo, setPlayerTwo] = useState(""); async function tryStartGame(e: React.FormEvent) { e.preventDefault(); // Prevent default browser behavior of submitting forms if (!playerOne) { setErrorMessage("A name is required for player 1"); return; } if (!playerTwo) { setErrorMessage("A name is required for player 2"); return; } if (playerOne === playerTwo) { setErrorMessage("Each player should have a unique name"); return; } setErrorMessage(""); try { const response = await fetch('mancala/api/start', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ nameplayer1: playerOne, nameplayer2: playerTwo }) }); if (response.ok) { const gameState = await response.json(); setGameState(gameState); } else { console.error(response.statusText); } } catch (error) { console.error(error.toString()); } } if (localStorage.getItem("state") !== null) { var state = localStorage.getItem("state"); const gameState = JSON.parse(state as string); setGameState(gameState); return } else { return (
tryStartGame(e)}> setPlayerOne(e.target.value)} /> setPlayerTwo(e.target.value)} />

{errorMessage}

) } }