"use client"; import { useState } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { api } from "@/lib/api"; import { useAuth } from "@/lib/auth"; import { useToast } from "@/lib/toast"; import { useI18n } from "@/lib/i18n"; export default function DiscussionDetailClient({ discussionId, initial }: { discussionId: string; initial: import("@/lib/types").DiscussionDetail }) { const { user, token } = useAuth(); const { toast } = useToast(); const { t } = useI18n(); const router = useRouter(); const [discussion, setDiscussion] = useState(initial); const [reply, setReply] = useState(""); const [likes, setLikes] = useState(discussion.like_count); const [loading, setLoading] = useState(false); const refresh = async () => { const d = await api.getDiscussion(discussionId); setDiscussion(d); setLikes(d.like_count); }; const submitReply = async () => { if (!token || !reply.trim()) return; setLoading(true); try { await api.postDiscussionReply(token, discussionId, reply.trim()); setReply(""); await refresh(); toast(t.community.replyOk, "success"); } catch { toast(t.community.replyFail, "error"); } finally { setLoading(false); } }; const toggleLike = async () => { if (!token) { router.push(`/login?next=/community/${discussionId}`); return; } try { const res = await api.likeDiscussion(token, discussionId); setLikes(res.like_count); } catch { /* ignore */ } }; return (
{discussion.category}

{discussion.title}

{discussion.author_emoji} {discussion.author} · {discussion.created_at}

{discussion.excerpt}

💬 {discussion.reply_count} {t.community.replies}

{t.community.replies} ({discussion.replies.length})

{discussion.replies.map((r) => (
{r.author_emoji} {r.author}

{r.content}

))}
{user && token ? (