Added 'Join' error message when lobby is not found
This commit is contained in:
@@ -240,7 +240,6 @@ app.get("/lobby/join", authenticateToken, async (req, res) => {
|
|||||||
if (!playerMap[lobbyId].includes(username)) {
|
if (!playerMap[lobbyId].includes(username)) {
|
||||||
playerMap[lobbyId].push(username);
|
playerMap[lobbyId].push(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.json({ lobbyId, username });
|
res.json({ lobbyId, username });
|
||||||
} else {
|
} else {
|
||||||
console.log("Lobby with " + lobbyId + " not found.");
|
console.log("Lobby with " + lobbyId + " not found.");
|
||||||
|
|||||||
+21
-5
@@ -7,7 +7,6 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|||||||
const joinCodeInput = document.getElementById("join-code");
|
const joinCodeInput = document.getElementById("join-code");
|
||||||
const joinSubmit = document.getElementById("submit-join");
|
const joinSubmit = document.getElementById("submit-join");
|
||||||
|
|
||||||
|
|
||||||
const getUsernameFromToken = async () => {
|
const getUsernameFromToken = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch("/verify", {method: "POST"});
|
const res = await fetch("/verify", {method: "POST"});
|
||||||
@@ -83,9 +82,22 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|||||||
joinSubmit.addEventListener("click", async (e) => {
|
joinSubmit.addEventListener("click", async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const lobbyId = joinCodeInput.value.trim();
|
const lobbyId = joinCodeInput.value.trim();
|
||||||
if (!lobbyId) return alert("Please enter a lobby ID");
|
const joinError = document.getElementById("join-error");
|
||||||
|
joinError.classList.add("hidden"); // hide any previous error
|
||||||
|
joinError.textContent = "";
|
||||||
|
|
||||||
|
if (!lobbyId) {
|
||||||
|
joinError.textContent = "Please enter a lobby ID.";
|
||||||
|
joinError.classList.remove("hidden");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const username = await getUsernameFromToken();
|
const username = await getUsernameFromToken();
|
||||||
if (!username) return alert("User not authenticated");
|
if (!username) {
|
||||||
|
joinError.textContent = "User not authenticated.";
|
||||||
|
joinError.classList.remove("hidden");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const joinRes = await fetch(`/lobby/join?lobbyId=${lobbyId}&username=${username}`);
|
const joinRes = await fetch(`/lobby/join?lobbyId=${lobbyId}&username=${username}`);
|
||||||
@@ -94,6 +106,8 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|||||||
document.getElementById("lobby-id").textContent = finalLobbyId;
|
document.getElementById("lobby-id").textContent = finalLobbyId;
|
||||||
document.getElementById("lobby-room").classList.remove("hidden");
|
document.getElementById("lobby-room").classList.remove("hidden");
|
||||||
joinForm.classList.add("hidden");
|
joinForm.classList.add("hidden");
|
||||||
|
joinCodeInput.value = "";
|
||||||
|
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
const res = await fetch(`/lobby/players?lobbyId=${finalLobbyId}`);
|
const res = await fetch(`/lobby/players?lobbyId=${finalLobbyId}`);
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
@@ -102,11 +116,13 @@ document.addEventListener("DOMContentLoaded", async () => {
|
|||||||
}, 3000);
|
}, 3000);
|
||||||
} else {
|
} else {
|
||||||
const error = await joinRes.json();
|
const error = await joinRes.json();
|
||||||
alert("Failed to join lobby: " + (error.error || "Unknown error"));
|
joinError.textContent = "Join failed: " + (error.error || "Unknown error");
|
||||||
|
joinError.classList.remove("hidden");
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Join lobby error:", err);
|
console.error("Join lobby error:", err);
|
||||||
alert("Could not join lobby.");
|
joinError.textContent = "Could not join lobby. Please try again.";
|
||||||
|
joinError.classList.remove("hidden");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
<input type="text" id="join-code" placeholder="Enter Lobby ID" />
|
<input type="text" id="join-code" placeholder="Enter Lobby ID" />
|
||||||
<button id="submit-join">Join</button>
|
<button id="submit-join">Join</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="join-error" class="error-message hidden"></div>
|
||||||
<div id="lobby-room" class="lobby-room hidden">
|
<div id="lobby-room" class="lobby-room hidden">
|
||||||
<h2>Lobby ID: <span id="lobby-id">N/A</span></h2>
|
<h2>Lobby ID: <span id="lobby-id">N/A</span></h2>
|
||||||
<div id="player-list">
|
<div id="player-list">
|
||||||
|
|||||||
@@ -115,3 +115,14 @@ button.logout {
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: 0.2s;
|
transition: 0.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.error-message {
|
||||||
|
color: red;
|
||||||
|
margin-top: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
text-shadow: 0 0 3px red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user