Files
echo-mvp/resource/static/js/home.js
2025-06-11 03:47:42 +12:00

62 lines
2.0 KiB
JavaScript

let pendingUsername = null;
function getUsername() {
const username = document.getElementById('username-input').value.trim();
if (!username) {
alert("Please enter your name.");
throw new Error("Username required");
}
pendingUsername = username;
return username;
}
document.getElementById('create-button').addEventListener('click', async () => {
try {
const username = getUsername();
const res = await fetch('/api/room', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({})
});
const data = await res.json();
if (data.code) {
const allUsernames = JSON.parse(localStorage.getItem('usernames') || '{}');
allUsernames[data.code] = pendingUsername;
localStorage.setItem('usernames', JSON.stringify(allUsernames));
window.location.href = `/room/${data.code}`;
} else {
alert("Failed to create room.");
}
} catch (_) {
}
});
document.getElementById('join-button').addEventListener('click', async () => {
try {
const username = getUsername();
const roomCode = document.getElementById('room-code-input').value.trim();
if (!roomCode) {
alert("Please enter a room code.");
return;
}
// Verify the room exists by trying to join it
const res = await fetch(`/api/room/${roomCode}`, {
method: 'GET',
headers: { 'Content-Type': 'application/json' }
});
if (res.ok) {
const allUsernames = JSON.parse(localStorage.getItem('usernames') || '{}');
allUsernames[roomCode] = pendingUsername;
localStorage.setItem('usernames', JSON.stringify(allUsernames));
window.location.href = `/room/${roomCode}`;
} else {
alert("Room not found or invalid code.");
}
} catch (_) {
}
});