"use client"; import { useState } from "react"; import { useParams, useRouter } from "next/navigation"; import Image from "next/image"; import { ArrowLeft, Star, Calendar, Database, BookOpen, ChevronDown, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent } from "@/components/ui/card"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible"; import { ThemeToggle } from "@/components/theme-toggle"; import { useFetchMangaChapters, useGetManga } from "@/api/mangamochi"; import { MangaChapter } from "@/components/manga-chapter"; import { useQueryClient } from "@tanstack/react-query"; export default function MangaDetailPage() { const params = useParams(); const router = useRouter(); const mangaId = Number(params.id); const queryClient = useQueryClient(); const { data: mangaData, queryKey } = useGetManga(mangaId); const { mutate, isPending } = useFetchMangaChapters({ mutation: { onSuccess: () => queryClient.invalidateQueries({ queryKey }), }, }); const [openProviders, setOpenProviders] = useState>(new Set()); if (!mangaData) { return (

Manga not found

); } const toggleProvider = (providerId: number) => { setOpenProviders((prev) => { const next = new Set(prev); if (next.has(providerId)) { next.delete(providerId); } else { next.add(providerId); } return next; }); }; const author = mangaData.authors.join(", "); const formatter = new Intl.DateTimeFormat("en-US", { month: "2-digit", day: "2-digit", year: "numeric", }); const publishedTo = mangaData.publishedTo ? formatter.format(new Date(mangaData.publishedTo)) : null; const publishedFrom = mangaData.publishedFrom ? formatter.format(new Date(mangaData.publishedFrom)) : null; const dateRange = publishedTo ? `${publishedFrom} - ${publishedTo}` : `${publishedFrom} - Present`; return (
{/* Header */}

MangaMochi

{/* Content */}
{/* Manga Info Section */}
{/* Cover */}
{mangaData.title}
{/* Details */}

{mangaData.title}

{mangaData.status}

{author}

{mangaData.alternativeTitles && mangaData.alternativeTitles.length > 0 && (

Alternative Titles

{mangaData.alternativeTitles.map((title, index) => ( {title} ))}
)}

{mangaData.synopsis}

Rating

{mangaData.score}/5.0

Chapters

{/*

{manga.chapters}

*/}

Published

{dateRange}

Providers

{mangaData.providerCount}

{mangaData.genres.map((genre) => ( {genre} ))}

Chapters by Provider

{mangaData?.providers.map((provider) => ( toggleProvider(provider.id)} >

{provider.providerName}

{provider.chaptersDownloaded} downloaded •{" "} {provider.chaptersAvailable} available

))}
); }