1
0

Set empty strings to "" instead of undefined

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-03-13 14:39:55 -07:00
parent d42070ed36
commit eb5f15f366
3 changed files with 43 additions and 78 deletions

View File

@ -1,8 +1,10 @@
import React, { useEffect, useState, useContext, useRef, useMemo } from "react"; import React, { useEffect, useState, useContext, useRef, useMemo,
useCallback } from "react";
import equal from "fast-deep-equal"; import equal from "fast-deep-equal";
import { assetsPath, debounce } from "./Common.js"; import { assetsPath, debounce } from "./Common.js";
import "./Board.css"; import "./Board.css";
import { GlobalContext } from "./GlobalContext.js"; import { GlobalContext } from "./GlobalContext.js";
const rows = [3, 4, 5, 4, 3, 2]; /* The final row of 2 is to place roads and corners */ const rows = [3, 4, 5, 4, 3, 2]; /* The final row of 2 is to place roads and corners */
const const
@ -214,11 +216,11 @@ const Board = () => {
><div className="Tile-Shape"/></div>; ><div className="Tile-Shape"/></div>;
}; };
const sendPlacement = (type, index) => { const sendPlacement = useCallback((type, index) => {
ws.send(JSON.stringify({ ws.send(JSON.stringify({
type, index type, index
})); }));
}; }, [ws]);
const Road = ({road}) => { const Road = ({road}) => {
const onClick = (event) => { const onClick = (event) => {

View File

@ -47,15 +47,7 @@ function withRouter(Component) {
} }
/* end of withRouter polyfill */ /* end of withRouter polyfill */
const Development = ({table, type, card, onClick}) => {
return (
<div className={`Development ${card.played ? 'Selected' : ''}`}
onClick={onClick}
style={{
backgroundImage:`url(${assetsPath}/gfx/card-${type}.png)`
}}/>
);
};
const StartButton = ({ table, game }) => { const StartButton = ({ table, game }) => {
const startClick = (event) => { const startClick = (event) => {
@ -67,42 +59,6 @@ const StartButton = ({ table, game }) => {
); );
}; };
const PlayerName = ({table, game}) => {
const [name, setName] = useState(game.name ? game.name : "");
const nameChange = (event) => {
setName(event.target.value);
}
const sendName = () => {
if (name !== game.name) {
table.setPlayerName(name);
} else {
table.setError("");
table.setState({ pickName: false });
}
}
const nameKeyPress = (event) => {
if (event.key === "Enter") {
sendName();
}
}
return (
<Paper className="PlayerName">
<TextField className="nameInput"
onChange={nameChange}
onKeyPress={nameKeyPress}
label="Enter your name"
variant="outlined"
value={name}
/>
<Button onClick={() => sendName()}>Set</Button>
</Paper>
);
};
/* This needs to take in a mechanism to declare the /* This needs to take in a mechanism to declare the
* player's active item in the game */ * player's active item in the game */
const Players = ({ table, game }) => { const Players = ({ table, game }) => {

View File

@ -18,7 +18,7 @@ const debug = {
audio: false, audio: false,
get: true, get: true,
set: true, set: true,
update: false//true update: true
}; };
let gameDB; let gameDB;
@ -149,17 +149,6 @@ const processTies = (players) => {
return !ties; return !ties;
} }
const playerFromName = (game, name) => {
for (let color in game.players) {
if (game.players[color].name === name) {
return game.players[color];
}
}
return undefined;
};
const processGameOrder = (game, player, dice) => { const processGameOrder = (game, player, dice) => {
if (player.orderRoll) { if (player.orderRoll) {
return `You have already rolled for game order and are not in a tie.`; return `You have already rolled for game order and are not in a tie.`;
@ -433,7 +422,8 @@ const newPlayer = (color) => {
brick: 0, brick: 0,
army: 0, army: 0,
development: [], development: [],
color color: color,
name: ""
}; };
} }
@ -446,8 +436,8 @@ const getSession = (game, id) => {
if (!(id in game.sessions)) { if (!(id in game.sessions)) {
game.sessions[id] = { game.sessions[id] = {
id: `[${id.substring(0, 8)}]`, id: `[${id.substring(0, 8)}]`,
name: undefined, name: '',
color: undefined, color: '',
player: undefined, player: undefined,
lastActive: Date.now(), lastActive: Date.now(),
live: true live: true
@ -544,7 +534,7 @@ const loadGame = async (id) => {
session.player.status = 'Active'; session.player.status = 'Active';
session.player.live = false; session.player.live = false;
} else { } else {
session.color = undefined; session.color = '';
session.player = undefined; session.player = undefined;
} }
@ -575,7 +565,6 @@ const canGiveBuilding = (game) => {
if (game.turn.actions && game.turn.actions.length !== 0) { if (game.turn.actions && game.turn.actions.length !== 0) {
return `Admin cannot give a building while other actions in play: ${game.turn.actions.join(', ')}.` return `Admin cannot give a building while other actions in play: ${game.turn.actions.join(', ')}.`
} }
return undefined;
} }
const adminActions = (game, action, value) => { const adminActions = (game, action, value) => {
@ -722,9 +711,7 @@ const adminActions = (game, action, value) => {
addChatMessage(game, null, `Admin rolling ${dice.join(', ')} for ${game.turn.name}.`); addChatMessage(game, null, `Admin rolling ${dice.join(', ')} for ${game.turn.name}.`);
switch (game.state) { switch (game.state) {
case 'game-order': case 'game-order':
message = `${game.turn.name} rolled ${dice[0]}.`; addActivity(game, session, `${game.turn.name} rolled ${dice[0]}.`);
addActivity(game, session, message);
message = undefined;
processGameOrder(game, session.player, dice[0]); processGameOrder(game, session.player, dice[0]);
break; break;
case 'normal': case 'normal':
@ -769,7 +756,7 @@ const adminActions = (game, action, value) => {
clearPlayer(player); clearPlayer(player);
session.player = undefined; session.player = undefined;
} }
session.color = undefined; session.color = "";
return; return;
} }
return `Unable to find active session for ${colorToWord(color)} (${value})`; return `Unable to find active session for ${colorToWord(color)} (${value})`;
@ -889,7 +876,7 @@ const colorToWord = (color) => {
case 'B': return 'blue'; case 'B': return 'blue';
case 'R': return 'red'; case 'R': return 'red';
default: default:
return undefined; return '';
} }
} }
@ -935,7 +922,7 @@ const setPlayerColor = (game, session, color) => {
/* Deselect currently active player for this session */ /* Deselect currently active player for this session */
clearPlayer(session.player); clearPlayer(session.player);
session.player = undefined; session.player = undefined;
session.color = undefined; session.color = '';
active--; active--;
/* If the player is not selecting a color, then return */ /* If the player is not selecting a color, then return */
@ -950,7 +937,7 @@ const setPlayerColor = (game, session, color) => {
} }
sendUpdateToPlayer(session, { sendUpdateToPlayer(session, {
name: session.name, name: session.name,
color: undefined, color: '',
live: session.live, live: session.live,
private: session.player private: session.player
}); });
@ -1015,7 +1002,7 @@ const addActivity = (game, session, message) => {
if (game.activities.length && game.activities[game.activities.length - 1].date === date) { if (game.activities.length && game.activities[game.activities.length - 1].date === date) {
date++; date++;
} }
game.activities.push({ color: session ? session.color : undefined, message, date }); game.activities.push({ color: session ? session.color : '', message, date });
} }
const addChatMessage = (game, session, message) => { const addChatMessage = (game, session, message) => {
@ -2454,7 +2441,6 @@ const placeRoad = (game, session, index) => {
longestRoad: game.longestRoad, longestRoad: game.longestRoad,
longestRoadLength: game.longestRoadLength longestRoadLength: game.longestRoadLength
}); });
} }
const discard = (game, session, discards) => { const discard = (game, session, discards) => {
@ -3003,12 +2989,23 @@ const sendGameToPlayers = (game) => {
}; };
const sendUpdateToPlayers = async (game, update) => { const sendUpdateToPlayers = async (game, update) => {
/* Ensure clearing of a field actually gets sent by setting
* undefined to 'false'
*/
for (let key in update) {
if (update[key] === undefined) {
update[key] = false;
}
}
if (debug.update) { if (debug.update) {
console.log(`[ all ]: -> sendUpdateToPlayers - `, update); console.log(`[ all ]: -> sendUpdateToPlayers - `, update);
} else { } else {
const keys = Object.getOwnPropertyNames(update); const keys = Object.getOwnPropertyNames(update);
console.log(`[ all ]: -> sendUpdateToPlayers - ${keys.join(',')}`); console.log(`[ all ]: -> sendUpdateToPlayers - ${keys.join(',')}`);
} }
const message = JSON.stringify({ const message = JSON.stringify({
type: 'game-update', type: 'game-update',
update update
@ -3024,12 +3021,23 @@ const sendUpdateToPlayers = async (game, update) => {
} }
const sendUpdateToPlayer = async (session, update) => { const sendUpdateToPlayer = async (session, update) => {
/* Ensure clearing of a field actually gets sent by setting
* undefined to 'false'
*/
for (let key in update) {
if (update[key] === undefined) {
update[key] = false;
}
}
if (debug.update) { if (debug.update) {
console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - `, update); console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - `, update);
} else { } else {
const keys = Object.getOwnPropertyNames(update); const keys = Object.getOwnPropertyNames(update);
console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - ${keys.join(',')}`); console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - ${keys.join(',')}`);
} }
const message = JSON.stringify({ const message = JSON.stringify({
type: 'game-update', type: 'game-update',
update update
@ -3689,12 +3697,11 @@ const resetGame = (game) => {
signature: game.signature, signature: game.signature,
players: game.players, players: game.players,
stolen: {}, stolen: {},
longestRoad: undefined, longestRoad: '',
longestRoadLength: 0, longestRoadLength: 0,
largestArmy: undefined, largestArmy: '',
largestArmySize: 0, largestArmySize: 0,
winner: undefined, winner: undefined,
longestRoad: undefined
}); });
/* Populate the game corner and road placement data as cleared */ /* Populate the game corner and road placement data as cleared */
@ -3906,7 +3913,7 @@ router.get("/", (req, res/*, next*/) => {
playerId = req.cookies.player; playerId = req.cookies.player;
} }
console.log(`[${req.cookies.player.substring(0, 8)}]: Browser hand-shake has started.`); console.log(`[${req.cookies.player.substring(0, 8)}]: Browser hand-shake achieved.`);
return res.status(200).send({ player: req.cookies.player }); return res.status(200).send({ player: req.cookies.player });
}); });