"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { Trash2 } from "lucide-react"; import { apiCreateComment, apiDeleteComment, apiMe, type Comment, type User } from "@/lib/api"; interface CommentSectionProps { postId: string; comments: Comment[]; } export default function CommentSection({ postId, comments }: CommentSectionProps) { const router = useRouter(); const [content, setContent] = useState(""); const [submitting, setSubmitting] = useState(false); const [user, setUser] = useState(null); const [deletingId, setDeletingId] = useState(null); useEffect(() => { apiMe() .then((res) => setUser(res.user || null)) .catch(() => setUser(null)); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!content.trim()) return; setSubmitting(true); try { const res = await apiCreateComment(postId, content); if (res.comment) { setContent(""); router.refresh(); } else if (res.error === "未登录") { router.push("/login"); } else { alert(res.error || "评论失败"); } } finally { setSubmitting(false); } }; const handleDelete = async (commentId: number) => { if (!confirm("确定要删除这条评论吗?")) return; setDeletingId(commentId); try { const res = await apiDeleteComment(postId, commentId); if (res.message) { router.refresh(); } else { alert(res.error || "删除失败"); } } finally { setDeletingId(null); } }; const canDelete = (comment: Comment) => user && (user.id === comment.user.id || user.role === "admin"); return (

评论 ({comments.length})