spotnotes.app/static/assets/js/nav.js
2026-06-01 23:02:39 -05:00

53 lines
No EOL
1.5 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
checkAuthStatus();
initLogoutListener();
initNavToggle();
});
function initNavToggle() {
const navToggle = document.getElementById('nav-toggle');
const navLinks = document.getElementById('nav-links');
if (navToggle && navLinks) {
navToggle.addEventListener('click', () => {
navLinks.classList.toggle('active');
});
}
}
async function checkAuthStatus() {
try {
const res = await fetch('/auth/me');
const data = await res.json();
updateAuthUI(data.authenticated);
} catch (err) {
console.error("Auth check failed", err);
}
}
function initLogoutListener() {
const logoutLink = document.getElementById('link-logout');
if (logoutLink) {
logoutLink.addEventListener('click', async (e) => {
e.preventDefault();
try {
await fetch('/auth/logout', { method: 'POST' });
window.location.reload();
} catch (err) {
console.error("Logout failed", err);
}
});
}
}
function updateAuthUI(isLoggedIn) {
const loginLink = document.getElementById('link-login');
const logoutLink = document.getElementById('link-logout');
if (isLoggedIn) {
if (loginLink) loginLink.style.display = 'none';
if (logoutLink) logoutLink.style.display = 'inline';
} else {
if (loginLink) loginLink.style.display = 'inline';
if (logoutLink) logoutLink.style.display = 'none';
}
}