From 1be0e49c48782d3afac580d81524d2c68ef6ccf0 Mon Sep 17 00:00:00 2001 From: IM23a-cernik Date: Thu, 8 May 2025 11:05:09 +0200 Subject: [PATCH] made empty lobbys deletable --- gambling.js | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/gambling.js b/gambling.js index d77b1c8..51a685a 100644 --- a/gambling.js +++ b/gambling.js @@ -147,19 +147,14 @@ app.post("/verify", authenticateToken, (request, response) => { response.json({valid: true, user: request.user}); }); -app.delete("/logout", authenticateToken, (request, response) => { +app.delete("/logout", authenticateToken, async (request, response) => { const username = request.user.username; const users = get_data(); const user = users.find(u => u.username === username); - if (!user) return response.status(404).json({ error: "User not found" }); + if (!user) return response.status(404).json({error: "User not found"}); const lobbyId = user.lobbyId; - if (lobbyId && playerMap[lobbyId]) { - playerMap[lobbyId] = playerMap[lobbyId].filter(player => player !== username); - if (playerMap[lobbyId].length === 0) { - delete playerMap[lobbyId]; - } - delete user.lobbyId; - } + await leaveLobby(lobbyId, username); + await deleteLobby(lobbyId); delete user.token; save_data(users); response.clearCookie("authorization", { @@ -167,11 +162,9 @@ app.delete("/logout", authenticateToken, (request, response) => { secure: process.env.NODE_ENV === "production", sameSite: "Strict" }); - response.json({ message: "Logged out successfully." }); + response.json({message: "Logged out successfully."}); }); - - /* Here will be the Game logic ----------------------------------------------------------------------------------------------- */ @@ -188,6 +181,20 @@ async function createLobby() { return lobbyId; } +async function leaveLobby(id, username) { + if (id && playerMap[id] && username) { + playerMap[id].splice(playerMap[id].indexOf(username), 1); + } +} + +async function deleteLobby(id) { + if (id && playerMap[id]) { + if (playerMap[id].length === 0) { + playerMap[id].splice(playerMap.indexOf(id), 1); + } + } +} + async function joinLobby(lobbyId, player_name) { let response = await fetch(`https://www.deckofcardsapi.com/api/deck/${lobbyId}/pile/${player_name}/add/?cards=`) console.log(response);