From 330c21ab531879f84a7789d01cb4d09b156113c0 Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Sat, 26 Dec 2020 14:38:21 -0700 Subject: [PATCH] Begin on the event code for DeleteGame --- server/src/events/DeleteGame.ts | 44 +++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 server/src/events/DeleteGame.ts diff --git a/server/src/events/DeleteGame.ts b/server/src/events/DeleteGame.ts new file mode 100644 index 0000000..a14b581 --- /dev/null +++ b/server/src/events/DeleteGame.ts @@ -0,0 +1,44 @@ +import { games, log } from '../main'; +import { Server, Socket } from 'socket.io'; + +export default (io: Server, socket: Socket, data: DeleteGame) => { + try { + + // Ensure game exists + if (!games[data.game_code]) { + log.debug(`Can't delete game that doesn't exist: ${data.game_code}`); + socket.emit(`Error`, { + status: 404, + message: `Game with code ${data.game_code} could not be found`, + source: `DeleteGame` + }); + return; + }; + + let game = games[data.game_code]; + + // Ensure user is the host + let player = game.players.find(x => x.isHost); + + if (player != null && player.socket !== socket) { + log.warn(`${player.name} attempted to delete game ${game.id}.`); + socket.emit(`Error`, { + status: 403, + message: `Not allowed to delete a game that you are not the host of.`, + source: `DeleteGame` + }); + return; + }; + + // Delete game + delete games[data.game_code]; + socket.emit(`GameDeleted`, { status: 200 }); + } + catch (err) { + socket.emit(`Error`, { + status: 500, + message: `${err.name}: ${err.message}`, + source: `DeleteGame`, + }); + }; +}; \ No newline at end of file