"use client"; import { useState } from "react"; import { ShieldAlert, ShieldCheck, Flag } from "lucide-react"; import { Button } from "@/components/ui/Button"; import { Modal } from "@/components/ui/Modal"; import { useToast } from "@/components/ui/Toast"; import { formatApiError } from "@/lib/hooks"; import { blockUser, unblockUser, reportUser, UserState } from "@/lib/api"; // دکمه‌های بلاک/آنبلاک/گزارش یک کاربر؛ هم توی لیست همه‌ی کاربران و هم توی // صفحه‌ی جزئیات یک کاربر استفاده می‌شه. export function UserModerationActions({ userId, state, onChanged, }: { userId: number; state: UserState; onChanged: () => void; }) { const toast = useToast(); const [blockOpen, setBlockOpen] = useState(false); const [reportOpen, setReportOpen] = useState(false); const [blockReason, setBlockReason] = useState(""); const [reportReason, setReportReason] = useState(""); const [loading, setLoading] = useState(false); async function handleBlock() { if (blockReason.trim().length < 3) return; setLoading(true); try { await blockUser(userId, blockReason.trim()); toast.showSuccess("کاربر بلاک شد"); setBlockOpen(false); setBlockReason(""); onChanged(); } catch (err) { toast.showError(formatApiError(err)); } finally { setLoading(false); } } async function handleUnblock() { setLoading(true); try { await unblockUser(userId); toast.showSuccess("کاربر آنبلاک شد"); onChanged(); } catch (err) { toast.showError(formatApiError(err)); } finally { setLoading(false); } } async function handleReport() { if (reportReason.trim().length < 3) return; setLoading(true); try { await reportUser(userId, reportReason.trim()); toast.showSuccess("گزارش ثبت شد"); setReportOpen(false); setReportReason(""); onChanged(); } catch (err) { toast.showError(formatApiError(err)); } finally { setLoading(false); } } return ( <>
{state === "blocked" ? ( ) : ( )}
setBlockOpen(false)} title="بلاک کردن کاربر">

کاربر بلاک‌شده دیگه نمی‌تونه وارد اپ بشه (حتی با توکن معتبر فعلیش).