This commit is contained in:
djmil 2023-11-11 11:08:48 +01:00
parent f5b09e2123
commit 703a6a0326
2 changed files with 47 additions and 6 deletions

View File

@ -29,7 +29,7 @@ export default function Games({ context: { games, dispatchGames, gamesApi }, pla
<ViewProvider players={players} dispatchGames={dispatchGames} /> <ViewProvider players={players} dispatchGames={dispatchGames} />
</div> </div>
<div className='right-side'> <div className='right-side'>
<ActionPanel /> <ActionPanel players={players}/>
<GameBoard /> <GameBoard />
{/* {/*
<GameMessage /> <GameMessage />
@ -80,11 +80,14 @@ function ViewProvider({ players, dispatchGames }) {
) )
} }
function ActionPanel() { function ActionPanel({ players }) {
return ( return (
<div className='ActionPanel'> <div className='ActionPanel'>
<Routes> <Routes>
<Route path='new' element={<Create />} /> <Route path='new' element={
<Create isCurrentUser={players.isCurrentUser}
/>
} />
<Route path='proposal' element={[<Accept key={1} />, <Reject key={2} />, <Cancel key={3} />]} /> <Route path='proposal' element={[<Accept key={1} />, <Reject key={2} />, <Cancel key={3} />]} />
<Route path='active' element={[<DrawReq key={1} />, <DrawAcq key={2} />, <Surrender key={3} />]} /> <Route path='active' element={[<DrawReq key={1} />, <DrawAcq key={2} />, <Surrender key={3} />]} />
<Route path='archive' element={[<Backward key={1} />, <Forward key={2} />]} /> <Route path='archive' element={[<Backward key={1} />, <Forward key={2} />]} />

View File

@ -1,6 +1,44 @@
import React from 'react'; import React, { useContext } from 'react';
import { GamesContext } from '../../../context/games';
import Wobler from '../../../components/Wobler';
export default function Create() {
return <button className='Create'>Create</button>
export default function Create({ isCurrentUser }) {
const newGameCtx = useContext(GamesContext).newGame;
const hasPlayers = checkPlayers(newGameCtx);
const hasCurrentUser = checkCurrentUser(newGameCtx, isCurrentUser);
const pushNewGame = () => {
if (!hasPlayers)
return alert("Black and White players must be selected for the game");
if (!hasCurrentUser)
return alert("You must be one of the selected players");
if (newGameCtx.pushing)
return; // current request is still being processed
console.log("send request");
}
return (
<button className={'Create'
+ (hasPlayers && hasCurrentUser ? ' enabled' : ' disabled')
}
onClick={pushNewGame}
>
<Wobler text="Create" dance={newGameCtx.pushing} />
</button>
)
}
function checkPlayers({ whitePlayer, blackPlayer }) {
return whitePlayer && blackPlayer
&& whitePlayer !== blackPlayer;
}
function checkCurrentUser({ whitePlayer, blackPlayer }, isCurrentUser) {
return isCurrentUser(whitePlayer) || isCurrentUser(blackPlayer);
} }