From c54f0db03e9341ff2e23e67b05f9dc5ef7ca7b30 Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Tue, 11 Feb 2025 21:23:27 +0100 Subject: [PATCH] feat: Ajout du statut de lecture des livres MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Affichage du statut de lecture des livres dans la grille (Non lu, Lu, En cours)\n- Utilisation des données readProgress de l'API Komga\n- Ajout des badges colorés pour chaque statut (jaune, vert, bleu)\n- Affichage de la date de lecture pour les livres terminés\n- Affichage de la progression (Page X/Y) pour les livres en cours --- src/components/series/BookGrid.tsx | 40 +++++++++++++++++++++++++++++- src/types/komga.ts | 11 +++++--- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/components/series/BookGrid.tsx b/src/components/series/BookGrid.tsx index 3413351..dc80d7c 100644 --- a/src/components/series/BookGrid.tsx +++ b/src/components/series/BookGrid.tsx @@ -43,6 +43,39 @@ interface BookCardProps { function BookCard({ book, onClick, getBookThumbnailUrl }: BookCardProps) { const [imageError, setImageError] = useState(false); + const getReadingStatusInfo = () => { + if (!book.readProgress) { + return { + label: "Non lu", + className: "bg-yellow-500/10 text-yellow-500", + }; + } + + if (book.readProgress.completed) { + const readDate = book.readProgress.readDate + ? new Date(book.readProgress.readDate).toLocaleDateString() + : null; + return { + label: readDate ? `Lu le ${readDate}` : "Lu", + className: "bg-green-500/10 text-green-500", + }; + } + + if (book.readProgress.page > 0) { + return { + label: `Page ${book.readProgress.page}/${book.media.pagesCount}`, + className: "bg-blue-500/10 text-blue-500", + }; + } + + return { + label: "Non lu", + className: "bg-yellow-500/10 text-yellow-500", + }; + }; + + const statusInfo = getReadingStatusInfo(); + return (