135 lines
4.5 KiB
JavaScript
135 lines
4.5 KiB
JavaScript
function updateNavVisibility() {
|
|
const token = localStorage.getItem('token');
|
|
document.querySelectorAll('.anonymous-links, .user-links').forEach(el => {
|
|
el.style.display = token ? 'none' : 'block';
|
|
});
|
|
document.querySelector('.user-links').style.display = token ? 'block' : 'none';
|
|
}
|
|
|
|
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() {
|
|
try {
|
|
const response = await fetch('/api/ksiazki');
|
|
if (!response.ok) {
|
|
throw new Error('Network response was not ok');
|
|
}
|
|
const books = await response.json();
|
|
const booksContainer = document.getElementById('books-container');
|
|
booksContainer.innerHTML = '';
|
|
|
|
books.forEach(book => {
|
|
const bookElement = document.createElement('div');
|
|
bookElement.className = 'col-md-4';
|
|
bookElement.innerHTML = `
|
|
<div class="card mb-4">
|
|
<img src="${book.obraz_url || 'https://via.placeholder.com/150'}" class="card-img-top" alt="${book.tytul}">
|
|
<div class="card-body">
|
|
<h5 class="card-title">${book.tytul}</h5>
|
|
<p class="card-text">${book.autor}</p>
|
|
<p class="card-text">${book.cena} PLN</p>
|
|
<button class="btn btn-primary">Dodaj do koszyka</button>
|
|
</div>
|
|
</div>
|
|
`;
|
|
booksContainer.appendChild(bookElement);
|
|
});
|
|
} catch (error) {
|
|
console.error('Error loading books:', error);
|
|
const booksContainer = document.getElementById('books-container');
|
|
booksContainer.innerHTML = '<div class="col-12 text-center"><p>Wystąpił błąd podczas ładowania książek.</p></div>';
|
|
}
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
if (document.getElementById('books-container')) {
|
|
loadBooks();
|
|
}
|
|
});
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
if (document.getElementById('books-container')) {
|
|
loadBooks();
|
|
}
|
|
});
|
|
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
if (document.getElementById('books-container')) {
|
|
loadBooks();
|
|
}
|
|
});
|
|
|