"use client"; import { Book, BookOpen, BookMarked, Star, StarOff } from "lucide-react"; import { KomgaSeries } from "@/types/komga"; import { useState, useEffect } from "react"; import { Button } from "../ui/button"; import { useToast } from "@/components/ui/use-toast"; import { Cover } from "@/components/ui/cover"; interface SeriesHeaderProps { series: KomgaSeries; } export const SeriesHeader = ({ series }: SeriesHeaderProps) => { const { toast } = useToast(); const [isFavorite, setIsFavorite] = useState(false); useEffect(() => { // Vérifier si la série est dans les favoris const checkFavorite = async () => { try { const response = await fetch(`/api/komga/series/${series.id}/favorite`); if (response.ok) { const data = await response.json(); setIsFavorite(data.favorite); } } catch (error) { console.error("Erreur lors de la vérification des favoris:", error); } }; checkFavorite(); }, [series.id]); const handleToggleFavorite = async () => { try { const response = await fetch(`/api/komga/series/${series.id}/favorite`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ favorite: !isFavorite }), }); if (response.ok) { setIsFavorite(!isFavorite); toast({ title: !isFavorite ? "Ajouté aux favoris" : "Retiré des favoris", description: series.metadata.title, }); } else { throw new Error("Erreur lors de la modification des favoris"); } } catch (error) { console.error("Erreur lors de la modification des favoris:", error); toast({ title: "Erreur", description: "Impossible de modifier les favoris", variant: "destructive", }); } }; const getReadingStatusInfo = () => { const { booksCount, booksReadCount, booksUnreadCount } = series; const booksInProgressCount = booksCount - (booksReadCount + booksUnreadCount); if (booksReadCount === booksCount) { return { label: "Lu", className: "bg-green-500/10 text-green-500", icon: BookMarked, }; } if (booksInProgressCount > 0 || (booksReadCount > 0 && booksReadCount < booksCount)) { return { label: `${booksReadCount}/${booksCount}`, className: "bg-blue-500/10 text-blue-500", icon: BookOpen, }; } return { label: "Non lu", className: "bg-yellow-500/10 text-yellow-500", icon: Book, }; }; const statusInfo = getReadingStatusInfo(); return (
{series.metadata.summary}
)}