Merge remote-tracking branch 'origin/main'

This commit is contained in:
IM23a-spirgif
2025-05-08 11:09:31 +02:00
+19 -12
View File
@@ -146,19 +146,14 @@ app.post("/verify", authenticateToken, (request, response) => {
response.json({valid: true, user: request.user}); 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 username = request.user.username;
const users = get_data(); const users = get_data();
const user = users.find(u => u.username === username); 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; const lobbyId = user.lobbyId;
if (lobbyId && playerMap[lobbyId]) { await leaveLobby(lobbyId, username);
playerMap[lobbyId] = playerMap[lobbyId].filter(player => player !== username); await deleteLobby(lobbyId);
if (playerMap[lobbyId].length === 0) {
delete playerMap[lobbyId];
}
delete user.lobbyId;
}
delete user.token; delete user.token;
save_data(users); save_data(users);
response.clearCookie("authorization", { response.clearCookie("authorization", {
@@ -166,11 +161,9 @@ app.delete("/logout", authenticateToken, (request, response) => {
secure: process.env.NODE_ENV === "production", secure: process.env.NODE_ENV === "production",
sameSite: "Strict" sameSite: "Strict"
}); });
response.json({ message: "Logged out successfully." }); response.json({message: "Logged out successfully."});
}); });
/* /*
Here will be the Game logic ----------------------------------------------------------------------------------------------- Here will be the Game logic -----------------------------------------------------------------------------------------------
*/ */
@@ -186,6 +179,20 @@ async function createLobby() {
return lobbyId; 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) { async function joinLobby(lobbyId, player_name) {
let response = await fetch(`https://www.deckofcardsapi.com/api/deck/${lobbyId}/pile/${player_name}/add/?cards=`) let response = await fetch(`https://www.deckofcardsapi.com/api/deck/${lobbyId}/pile/${player_name}/add/?cards=`)