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 { if (window.SpotCrypto) window.SpotCrypto.clearSession(); 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'; } }