messages/message2opponent #12

Merged
djmil merged 3 commits from messages/message2opponent into main 2023-10-31 13:22:02 +01:00
8 changed files with 64 additions and 5 deletions

View File

@ -18,4 +18,9 @@
.game .right-side {
float: left;
width: 55%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}

View File

@ -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() {
</div>
<div className='right-side'>
<GameAction />
<GameMessage />
<GameBoard />
<Message2Opponent />
</div>
</div>
)

View File

@ -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: {

View File

@ -0,0 +1,6 @@
.game-message {
border-radius: 3px;
border-color: lightgray;
background-color:violet;
width: 70%;
}

View File

@ -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 (
<div className='game-message'>
TBD: Game Message
</div>
)
}

View File

@ -0,0 +1,3 @@
.message2opponent input{
width: 270px;
}

View File

@ -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 (
<div className='message2opponent'>
<input
placeholder='Message to opponent'
value={ctx.newGame.message}
maxLength={150}
onChange={e => setMessage(e.target.value)}
/>
</div>
)
}

View File

@ -24,6 +24,7 @@ export const initialState = {
newGame: {
whitePlayer: '',
blackPlayer: '',
message: '',
},
}