diff --git a/webapp/src/container/games/action/Accept.jsx b/webapp/src/container/games/action/Accept.jsx index 5fba232..7a27b17 100644 --- a/webapp/src/container/games/action/Accept.jsx +++ b/webapp/src/container/games/action/Accept.jsx @@ -1,6 +1,15 @@ -import React from 'react'; +import React, { useContext } from 'react'; +import { GamesContext } from '../../../context/games'; export default function Accept() { + const games = useContext(GamesContext); - return -} + const selectedGame = games.findGame({ uuid: games.proposal.selectedUUID }); + + if (selectedGame?.status !== 'GAME_PROPOSAL_WAIT_FOR_OPPONENT') + return ( + + ) +} \ No newline at end of file diff --git a/webapp/src/container/games/action/Cancel.jsx b/webapp/src/container/games/action/Cancel.jsx index 3d6642e..7686bf0 100644 --- a/webapp/src/container/games/action/Cancel.jsx +++ b/webapp/src/container/games/action/Cancel.jsx @@ -1,6 +1,15 @@ -import React from 'react'; +import React, { useContext } from 'react'; +import { GamesContext } from '../../../context/games'; export default function Cancel() { + const games = useContext(GamesContext); - return + const selectedGame = games.findGame({ uuid: games.proposal.selectedUUID }); + + if (selectedGame?.status === 'GAME_PROPOSAL_WAIT_FOR_OPPONENT') + return ( + + ) } diff --git a/webapp/src/container/games/action/Reject.jsx b/webapp/src/container/games/action/Reject.jsx index 4cc20ba..c8672d9 100644 --- a/webapp/src/container/games/action/Reject.jsx +++ b/webapp/src/container/games/action/Reject.jsx @@ -1,6 +1,15 @@ -import React from 'react'; +import React, { useContext } from 'react'; +import { GamesContext } from '../../../context/games'; export default function Reject() { + const games = useContext(GamesContext); - return -} + const selectedGame = games.findGame({ uuid: games.proposal.selectedUUID }); + + if (selectedGame?.status !== 'GAME_PROPOSAL_WAIT_FOR_OPPONENT') + return ( + + ) +} \ No newline at end of file diff --git a/webapp/src/container/games/view/GameSelector.jsx b/webapp/src/container/games/view/GameSelector.jsx index c0faf9b..a105e9a 100644 --- a/webapp/src/container/games/view/GameSelector.jsx +++ b/webapp/src/container/games/view/GameSelector.jsx @@ -7,8 +7,6 @@ import Loading from '../../../components/Loading'; import Counter from '../../../components/Counter'; export default function GameSelector({ yours, opponents, isSelected, onSelect }) { - const games = useContext(GamesContext); - const gamesList = useContext(GamesContext).gamesList; if (gamesList === null) return diff --git a/webapp/src/reducer/games.js b/webapp/src/reducer/games.js index c01feee..50a1add 100644 --- a/webapp/src/reducer/games.js +++ b/webapp/src/reducer/games.js @@ -17,6 +17,8 @@ const initialState = { // Network isPollingGamesList: false, isPushingNewGame: false, + + findGame, }; function reducer(state, action) { @@ -44,4 +46,8 @@ function reducer(state, action) { export default function useGamesReducer() { return useReducer(reducer, initialState); +} + +function findGame({uuid}) { + return this.gamesList?.find((game) => game.uuid === uuid); } \ No newline at end of file