import { useState, useEffect } from 'react'; import { useParams, Link } from 'react-router-dom'; import { getBookById, reserveBook } from '../api/books'; import { useAuth } from '../context/AuthContext'; export default function BookDetail() { const { user } = useAuth(); const { bookId } = useParams(); const [book, setBook] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [phoneNumber, setPhoneNumber] = useState(''); const [reservationStatus, setReservationStatus] = useState(null); const [reserving, setReserving] = useState(false); useEffect(() => { getBookById(bookId).then((response) => setBook(response.data)).catch((err) => { console.error(err); setError('Livre introuvable.'); }).finally(() => setLoading(false)); }, [bookId]); function handleReservation(e) { e.preventDefault(); setReserving(true); setReservationStatus(null); reserveBook(bookId, { phoneNumber }) .then(() => { setReservationStatus({ success: true, message: 'Réservation effectuée avec succès !' }); setPhoneNumber(''); }) .catch((err) => { const msg = err.response?.data || 'Erreur lors de la réservation.'; setReservationStatus({ success: false, message: msg }); }) .finally(() => setReserving(false)); } if (loading) return

Chargement…

; if (error) return

{error}

← Retour au catalogue
; return (
← Retour au catalogue

{book.title}

Auteur : {book.author}

ISBN : {book.isbn}

Éditeur : {book.publisher}

Publié le : {book.publicationDate}

Prix : {book.price} €

Stock : {book.quantity}

Langue : {book.language}

Catégories : {book.categories?.join(', ')}

{book.description &&

{book.description}

} {user?.role === 'user' &&

Réserver ce livre

{reservationStatus && (

{reservationStatus.message}

)}
}
); }