Merge pull request #125 from AlecM33/bugfix

correctly 404 invalid games
This commit is contained in:
Alec
2022-11-06 17:26:23 -05:00
committed by GitHub
3 changed files with 15 additions and 16 deletions

View File

@@ -317,26 +317,20 @@ class GameManager {
namespace.in(game.accessCode).emit(globals.EVENT_IDS.START_GAME);
};
handleRequestForGameState = async (namespace, logger, gameRunner, accessCode, personCookie, ackFn, clientSocket) => {
const game = gameRunner.activeGames.get(accessCode);
if (game) {
const matchingPerson = findPersonByField(game, 'cookie', personCookie);
if (matchingPerson) {
if (matchingPerson.socketId === clientSocket.id) {
logger.trace('matching person found with an established connection to the room: ' + matchingPerson.name);
ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger));
} else {
logger.trace('matching person found with a new connection to the room: ' + matchingPerson.name);
clientSocket.join(accessCode);
matchingPerson.socketId = clientSocket.id;
ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger));
}
handleRequestForGameState = async (game, namespace, logger, gameRunner, accessCode, personCookie, ackFn, clientSocket) => {
const matchingPerson = findPersonByField(game, 'cookie', personCookie);
if (matchingPerson) {
if (matchingPerson.socketId === clientSocket.id) {
logger.trace('matching person found with an established connection to the room: ' + matchingPerson.name);
ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger));
} else {
rejectClientRequestForGameState(ackFn);
logger.trace('matching person found with a new connection to the room: ' + matchingPerson.name);
clientSocket.join(accessCode);
matchingPerson.socketId = clientSocket.id;
ackFn(GameStateCurator.getGameStateFromPerspectiveOfPerson(game, matchingPerson, gameRunner, clientSocket, logger));
}
} else {
rejectClientRequestForGameState(ackFn);
logger.trace('the game ' + accessCode + ' was not found');
}
};

View File

@@ -51,6 +51,7 @@ class SocketManager {
switch (eventId) {
case EVENT_IDS.FETCH_GAME_STATE:
await gameManager.handleRequestForGameState(
game,
this.namespace,
this.logger,
gameManager.activeGameRunner,
@@ -94,6 +95,8 @@ class SocketManager {
default:
break;
}
} else {
ackFn(null);
}
});
};

View File

@@ -192,6 +192,7 @@ describe('GameManager', () => {
player.socketId = 'socket1';
spyOn(namespace.in(), 'emit');
gameManager.handleRequestForGameState(
gameRunner.activeGames.get('abc'),
namespace,
logger,
gameRunner,
@@ -212,6 +213,7 @@ describe('GameManager', () => {
player.socketId = 'socket_111111';
spyOn(namespace.in(), 'emit');
gameManager.handleRequestForGameState(
gameRunner.activeGames.get('abc'),
namespace,
logger,
gameRunner,