"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

))}
) }