GameProposal: create new game #38
@ -29,7 +29,7 @@ export default function Games({ context: { games, dispatchGames, gamesApi }, pla
|
||||
<ViewProvider players={players} dispatchGames={dispatchGames} />
|
||||
</div>
|
||||
<div className='right-side'>
|
||||
<ActionPanel />
|
||||
<ActionPanel players={players}/>
|
||||
<GameBoard />
|
||||
{/*
|
||||
<GameMessage />
|
||||
@ -80,11 +80,14 @@ function ViewProvider({ players, dispatchGames }) {
|
||||
)
|
||||
}
|
||||
|
||||
function ActionPanel() {
|
||||
function ActionPanel({ players }) {
|
||||
return (
|
||||
<div className='ActionPanel'>
|
||||
<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='active' element={[<DrawReq key={1} />, <DrawAcq key={2} />, <Surrender key={3} />]} />
|
||||
<Route path='archive' element={[<Backward key={1} />, <Forward key={2} />]} />
|
||||
|
@ -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);
|
||||
}
|
Loading…
Reference in New Issue
Block a user