"use client"; import { useTransition } from "react"; import { useRouter } from "next/navigation"; import { EyeOff, Eye, Star } from "lucide-react"; import { setReviewStatus } from "@/features/reviews/actions"; import { toast } from "sonner"; interface AdminReviewRow { id: string; rating: number; title: string | null; content: string; status: string; createdAt: Date; toolName: string; toolSlug: string; authorName: string; } /** * # 组件 ReviewsAdminTable * 说明:评论审核表 —— 隐藏/恢复(隐藏后重算工具聚合评分)。 */ export function ReviewsAdminTable({ reviews }: { reviews: AdminReviewRow[] }) { const router = useRouter(); const [isPending, startTransition] = useTransition(); const toggle = (id: string, currentStatus: string) => { startTransition(async () => { try { await setReviewStatus(id, currentStatus === "published" ? "hidden" : "published"); toast.success(currentStatus === "published" ? "Review hidden" : "Review restored"); router.refresh(); } catch { toast.error("Failed"); } }); }; if (reviews.length === 0) { return (
No reviews yet.
); } return ({review.title}
)}{review.content}