"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { useTranslation } from "../../lib/i18n/context"; interface MarkSeriesReadButtonProps { seriesName: string; bookCount: number; booksReadCount: number; } export function MarkSeriesReadButton({ seriesName, bookCount, booksReadCount }: MarkSeriesReadButtonProps) { const { t } = useTranslation(); const [loading, setLoading] = useState(false); const router = useRouter(); const allRead = booksReadCount >= bookCount; const targetStatus = allRead ? "unread" : "read"; const label = allRead ? t("markRead.markUnread") : t("markRead.markAllRead"); const handleClick = async (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); setLoading(true); try { const res = await fetch("/api/series/mark-read", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ series: seriesName, status: targetStatus }), }); if (!res.ok) { const body = await res.json().catch(() => ({ error: res.statusText })); console.error("Failed to mark series:", body.error); } router.refresh(); } catch (err) { console.error("Failed to mark series:", err); } finally { setLoading(false); } }; return ( ); }