From f25fd51572fe44ac87513029d20384ca6e968845 Mon Sep 17 00:00:00 2001 From: djmil Date: Tue, 31 Oct 2023 13:22:01 +0100 Subject: [PATCH] messages/message2opponent (#12) Reviewed-on: http://192.168.8.55:3000/HQLAx/CordaCheckers/pulls/12 --- webapp/src/components/Game.css | 5 ++++ webapp/src/components/Game.jsx | 6 ++++- .../src/components/Game/GameAction/Create.jsx | 10 ++++---- webapp/src/components/Game/GameMessage.css | 6 +++++ webapp/src/components/Game/GameMessage.jsx | 15 ++++++++++++ .../src/components/Game/Message2Opponent.css | 3 +++ .../src/components/Game/Message2Opponent.jsx | 23 +++++++++++++++++++ webapp/src/context/app/reducer.js | 1 + 8 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 webapp/src/components/Game/GameMessage.css create mode 100644 webapp/src/components/Game/GameMessage.jsx create mode 100644 webapp/src/components/Game/Message2Opponent.css create mode 100644 webapp/src/components/Game/Message2Opponent.jsx diff --git a/webapp/src/components/Game.css b/webapp/src/components/Game.css index 458f0c4..e15501b 100644 --- a/webapp/src/components/Game.css +++ b/webapp/src/components/Game.css @@ -18,4 +18,9 @@ .game .right-side { float: left; width: 55%; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } \ No newline at end of file diff --git a/webapp/src/components/Game.jsx b/webapp/src/components/Game.jsx index b72bcfc..e4d49c1 100644 --- a/webapp/src/components/Game.jsx +++ b/webapp/src/components/Game.jsx @@ -4,7 +4,9 @@ import GameView from './Game/GameView' import GameSelector from './Game/GameSelector' import GameAction from './Game/GameAction' import GameBoard from './Game/GameBoard' -import NewGame from './Game/NewGame'; +import NewGame from './Game/NewGame' +import GameMessage from './Game/GameMessage' +import Message2Opponent from './Game/Message2Opponent' export default function Game() { @@ -17,7 +19,9 @@ export default function Game() {
+ +
) diff --git a/webapp/src/components/Game/GameAction/Create.jsx b/webapp/src/components/Game/GameAction/Create.jsx index c78fff0..bbcc817 100644 --- a/webapp/src/components/Game/GameAction/Create.jsx +++ b/webapp/src/components/Game/GameAction/Create.jsx @@ -17,7 +17,8 @@ export default function Create() { postData("/api/gameproposal", request) .then((responce) => { - console.log("responce", responce); // JSON data parsed by `data.json()` call + console.log("responce", responce) // JSON data parsed by `data.json()` call + ctx.clear_Message2Opponent() }); } @@ -32,7 +33,7 @@ export default function Create() { } function Definitions() { - const [ctx] = React.useContext(AppContext) + const [ctx, dispatchCtx] = React.useContext(AppContext) const [data] = React.useContext(AppData) const isCurrentUser = data.isCurrentUser @@ -54,7 +55,7 @@ function Definitions() { opponentName, opponentColor, board: null, - message: "let's play a game" + message: ctx.newGame.message } } @@ -64,6 +65,7 @@ function Definitions() { isEnabled, get_GameProposalRequest, + clear_Message2Opponent: () => { dispatchCtx({ update: "newGame", message: '' }) } } } @@ -81,7 +83,7 @@ function get_Opponent(isCurrentUser, whitePlayerName, blackPlayerName) { async function postData(url = "", data = {}) { console.log("POST", url, data) - + const response = await fetch(url, { method: "POST", headers: { diff --git a/webapp/src/components/Game/GameMessage.css b/webapp/src/components/Game/GameMessage.css new file mode 100644 index 0000000..b8871b8 --- /dev/null +++ b/webapp/src/components/Game/GameMessage.css @@ -0,0 +1,6 @@ +.game-message { + border-radius: 3px; + border-color: lightgray; + background-color:violet; + width: 70%; +} \ No newline at end of file diff --git a/webapp/src/components/Game/GameMessage.jsx b/webapp/src/components/Game/GameMessage.jsx new file mode 100644 index 0000000..aad2d4c --- /dev/null +++ b/webapp/src/components/Game/GameMessage.jsx @@ -0,0 +1,15 @@ +import './GameMessage.css' +import React from 'react' + +import { AppContext } from '../../context/app' + +export default function GameMessage() { + + const [ctx] = React.useContext(AppContext) + + return ( +
+ TBD: Game Message +
+ ) +} diff --git a/webapp/src/components/Game/Message2Opponent.css b/webapp/src/components/Game/Message2Opponent.css new file mode 100644 index 0000000..cb2abb7 --- /dev/null +++ b/webapp/src/components/Game/Message2Opponent.css @@ -0,0 +1,3 @@ +.message2opponent input{ + width: 270px; +} \ No newline at end of file diff --git a/webapp/src/components/Game/Message2Opponent.jsx b/webapp/src/components/Game/Message2Opponent.jsx new file mode 100644 index 0000000..f341afe --- /dev/null +++ b/webapp/src/components/Game/Message2Opponent.jsx @@ -0,0 +1,23 @@ +import './Message2Opponent.css' +import React from 'react' + +import { AppContext } from '../../context/app' + +export default function Message2Opponent() { + const [ctx, dispatchCtx] = React.useContext(AppContext) + + const setMessage = (message) => { + dispatchCtx({ update: "newGame", message }) + } + + return ( +
+ setMessage(e.target.value)} + /> +
+ ) +} diff --git a/webapp/src/context/app/reducer.js b/webapp/src/context/app/reducer.js index b68ecc6..08f6a10 100644 --- a/webapp/src/context/app/reducer.js +++ b/webapp/src/context/app/reducer.js @@ -24,6 +24,7 @@ export const initialState = { newGame: { whitePlayer: '', blackPlayer: '', + message: '', }, }