"use client"; import { useState } from "react"; import { apiFetch, ApiError } from "@/lib/api"; import { useList } from "@/lib/useResource"; import { useToast } from "@/components/toast"; import { DataTable, type Column } from "@/components/DataTable"; import { Button, ConfirmDialog, Field, Input, Select, PageHeader, Card, } from "@/components/ui"; import { TrashIcon } from "@/components/icons"; import { toFa } from "@/lib/utils"; interface Comment { id?: number; content?: string; text?: string; body?: string; created_at?: string; user?: { name?: string; }; name?: string; } export default function CommentsPage() { const toast = useToast(); // Form (uncommitted) state const [type, setType] = useState("media"); const [id, setId] = useState(""); // Committed query state used to build the request path const [query, setQuery] = useState<{ type: string; id: string } | null>(null); const path = query && query.type && query.id ? `/comments/${query.type}/${query.id}` : null; const { data, loading, error, reload } = useList(path); const [deleting, setDeleting] = useState(null); const [removing, setRemoving] = useState(false); function submit(e: React.FormEvent) { e.preventDefault(); if (!type || !id.trim()) { toast.error("نوع و شناسه را وارد کنید."); return; } setQuery({ type, id: id.trim() }); } async function confirmDelete() { if (!deleting || !query) return; setRemoving(true); try { await apiFetch(`/comments/${query.type}/${query.id}`, { method: "DELETE", }); toast.success("نظر حذف شد."); setDeleting(null); reload(); } catch (err) { toast.error(err instanceof ApiError ? err.message : "خطا در حذف"); } finally { setRemoving(false); } } const columns: Column[] = [ { key: "user", header: "کاربر", render: (r) => r.user?.name ?? r.name ?? "—", }, { key: "content", header: "متن", render: (r) => r.content ?? r.text ?? r.body ?? "—", }, { key: "created_at", header: "تاریخ", render: (r) => r.created_at ? toFa(new Date(r.created_at).toLocaleDateString("fa-IR")) : "—", }, ]; return (
setId(e.target.value)} placeholder="شناسه محتوا" dir="ltr" />
{path ? ( ( )} /> ) : (

برای مشاهده نظرات، نوع و شناسه را انتخاب و دکمه نمایش را بزنید.

)} setDeleting(null)} />
); }