Files
echo-mvp/resource/static/js/base.js
2025-06-11 03:31:59 +12:00

67 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const STORAGE_VERSION = '11'; // Update this when changing storage structure
if (localStorage.getItem('version') !== STORAGE_VERSION) {
localStorage.clear();
localStorage.setItem('version', STORAGE_VERSION);
}
const savedSettingDarkPersist = localStorage.getItem('dark-mode-toggle');
if (savedSettingDarkPersist === 'true') {
document.body.classList.add('dark');
} else {
document.body.classList.remove('dark');
}
document.documentElement.classList.add('no-transitions');
setTimeout(function() {
document.documentElement.classList.remove('no-transitions');
}, 100);
function updateNavbarWithRooms() {
const navbar = document.querySelector('.navbar');
if (!navbar) return;
const linksToRemove = [];
navbar.querySelectorAll('a').forEach(link => {
if (link.href && link.href.includes('/room/')) {
linksToRemove.push(link);
}
});
linksToRemove.forEach(link => link.remove());
const allUsernames = JSON.parse(localStorage.getItem('usernames') || '{}');
const rooms = Object.keys(allUsernames);
rooms.forEach(roomCode => {
const roomLink = document.createElement('a');
roomLink.href = `/room/${roomCode}`;
roomLink.textContent = `Room: ${roomCode}`;
const removeBtn = document.createElement('span');
removeBtn.textContent = ' ×';
removeBtn.onclick = (e) => {
e.preventDefault();
e.stopPropagation();
removeRoom(roomCode);
};
roomLink.appendChild(removeBtn);
const settingsLink = navbar.querySelector('a[href="/settings"]');
if (settingsLink) {
settingsLink.before(roomLink);
} else {
navbar.appendChild(roomLink);
}
});
}
function removeRoom(roomCode) {
const allUsernames = JSON.parse(localStorage.getItem('usernames')) || '{}';
delete allUsernames[roomCode];
localStorage.setItem('usernames', JSON.stringify(allUsernames));
updateNavbarWithRooms();
}
document.addEventListener('DOMContentLoaded', updateNavbarWithRooms);