document.addEventListener('DOMContentLoaded', () => { updateNavVisibility(); setInterval(updateNavVisibility, 1000); // Aktualizuj co sekundę }); function updateNavVisibility() { const token = localStorage.getItem('token'); document.querySelectorAll('.anonymous-links, .user-links').forEach(el => { el.style.display = 'none'; }); if (token) { document.querySelector('.user-links').style.display = 'flex'; } else { document.querySelector('.anonymous-links').style.display = 'flex'; } } document.getElementById('logoutLink')?.addEventListener('click', (e) => { e.preventDefault(); localStorage.removeItem('token'); localStorage.removeItem('imie'); window.location.href = '/'; }); document.addEventListener('DOMContentLoaded', () => { updateNavVisibility(); // Aktualizuj awatar/imię w nagłówku const userName = localStorage.getItem('imie'); if(userName) { const profileLink = document.querySelector('a[href="/profile.html"]'); if(profileLink) profileLink.innerHTML = `👤 ${userName}`; } }); async function loadUserData() { const response = await fetch('/api/check-auth'); const data = await response.json(); updateNavVisibility(data.authenticated); } document.getElementById('loginForm')?.addEventListener('submit', async (e) => { e.preventDefault(); const email = document.getElementById('loginEmail').value; const password = document.getElementById('loginPassword').value; const response = await fetch('/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email, haslo: password }), }); const data = await response.json(); if (response.ok) { localStorage.setItem('token', data.token); localStorage.setItem('imie', data.imie); window.location.href = '/'; } else { alert(data.message || 'Logowanie nieudane'); } }); document.getElementById('registerForm')?.addEventListener('submit', async (e) => { e.preventDefault(); const name = document.getElementById('registerName').value; const email = document.getElementById('registerEmail').value; const password = document.getElementById('registerPassword').value; const confirmPassword = document.getElementById('registerConfirmPassword').value; if (password !== confirmPassword) { alert('Hasła nie są identyczne'); return; } const response = await fetch('/rejestracja', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ imie: name, email, haslo: password, confirmPassword }), }); if (response.ok) { alert('Rejestracja udana'); window.location.href = '/login.html'; } else { const data = await response.text(); alert(data || 'Rejestracja nieudana'); } }); async function loadBooks(searchTerm = '') { try { const response = await fetch(`/api/ksiazki?search=${encodeURIComponent(searchTerm)}`); if (!response.ok) throw new Error(`Błąd HTTP: ${response.status}`); const books = await response.json(); renderBooks(books); } catch (error) { console.error('Błąd ładowania książek:', error); showError('Wystąpił błąd podczas ładowania książek'); } } // Inicjalizacja przy pierwszym załadowaniu document.addEventListener('DOMContentLoaded', () => { if (document.getElementById('books-container')) { loadBooks(); } // Nasłuchiwanie wyszukiwania document.getElementById('searchInput')?.addEventListener('input', (e) => { loadBooks(e.target.value); }); updateNavVisibility(); }); document.getElementById('searchForm')?.addEventListener('submit', async (e) => { e.preventDefault(); const searchTerm = document.querySelector('#searchForm input').value; const response = await fetch(`/api/ksiazki?search=${encodeURIComponent(searchTerm)}`); const books = await response.json(); renderBooks(books); }); function renderBooks(books) { const container = document.getElementById('books-container'); if (!container) return; container.innerHTML = books.map(book => `
`).join(''); } function showError(message) { const container = document.getElementById('books-container'); if (!container) return; container.innerHTML = `