"use client"; import { useRouter } from "next/navigation"; import { KomgaBook } from "@/types/komga"; import { useEffect, useState } from "react"; import { BookReader } from "@/components/reader/BookReader"; import { ImageOff } from "lucide-react"; import Image from "next/image"; interface BookData { book: KomgaBook; pages: number[]; } export default function BookPage({ params }: { params: { bookId: string } }) { const router = useRouter(); const [data, setData] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); const [imageError, setImageError] = useState(false); const [isReading, setIsReading] = useState(false); useEffect(() => { const fetchBookData = async () => { try { const response = await fetch(`/api/komga/books/${params.bookId}`); if (!response.ok) { const data = await response.json(); throw new Error(data.error || "Erreur lors de la récupération du tome"); } const data = await response.json(); setData(data); setIsReading(true); } catch (error) { console.error("Erreur:", error); setError(error instanceof Error ? error.message : "Une erreur est survenue"); } finally { setIsLoading(false); } }; fetchBookData(); }, [params.bookId]); const handleCloseReader = () => { setIsReading(false); router.back(); }; if (isLoading) { return (
); } if (error || !data) { return (

{error || "Données non disponibles"}

); } const { book, pages } = data; if (isReading) { return ; } return (
{/* En-tête du tome */}
{/* Couverture */}
{!imageError ? ( {`Couverture setImageError(true)} /> ) : (
)}
{/* Informations */}

{book.metadata.title || `Tome ${book.metadata.number}`}

{book.seriesTitle} - Tome {book.metadata.number}

{book.metadata.summary && (

{book.metadata.summary}

)}
{book.metadata.releaseDate && (
Date de sortie :{" "} {new Date(book.metadata.releaseDate).toLocaleDateString()}
)} {book.metadata.authors?.length > 0 && (
Auteurs :{" "} {book.metadata.authors .map((author) => `${author.name} (${author.role})`) .join(", ")}
)} {book.size && (
Taille : {book.size}
)} {book.media.pagesCount > 0 && (
Pages : {book.media.pagesCount}
)}
); }