"use client"; import { CircleAlertIcon, Trash2Icon, UserPlusIcon } from "lucide-react"; import { useRouter } from "next/navigation"; import { useActionState, useEffect, useRef, useTransition } from "react"; import { toast } from "sonner"; import { createAccount, removeAccount, type CreateAccountState, } from "@/app/admin/register/actions"; import { DeleteConfirmationDialog } from "@/components/admin/delete-confirmation-dialog"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Field, FieldDescription, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { Spinner } from "@/components/ui/spinner"; const initialCreateAccountState: CreateAccountState = { status: "idle", message: "", }; export function RegisterCard({ accounts, currentUserId, }: { accounts: Array<{ id: string; name: string; email: string; createdAt: Date }>; currentUserId: string; }) { const router = useRouter(); const formRef = useRef(null); const [state, formAction, pending] = useActionState( createAccount, initialCreateAccountState, ); const [removing, startRemoval] = useTransition(); useEffect(() => { if (state.status !== "success") return; formRef.current?.reset(); router.refresh(); }, [router, state]); function remove(userId: string) { startRemoval(async () => { const result = await removeAccount(userId); if (result.status === "error") toast.error(result.message); else { toast.success("ลบบัญชีแล้ว"); router.refresh(); } }); } return (
สร้างบัญชี เพิ่มบัญชีผู้ดูแลที่สามารถเข้าสู่ระบบและจัดการเนื้อหาได้
ชื่อ อีเมล รหัสผ่าน อย่างน้อย 12 ตัวอักษร ยืนยันรหัสผ่าน {state.message ? ( ) : null}
บัญชีในระบบ {accounts.length} บัญชี {accounts.map((account) => { const isCurrent = account.id === currentUserId; return (

{account.name}

{account.email}

{isCurrent ? ( บัญชีปัจจุบัน ) : ( } title={`ลบบัญชี ${account.name}?`} description="ผู้ใช้นี้จะออกจากระบบและไม่สามารถเข้าสู่ระบบได้อีก การดำเนินการนี้ย้อนกลับไม่ได้" confirmLabel="ลบบัญชี" onConfirm={() => remove(account.id)} > ลบบัญชี {account.name} )}
); })}

บัญชีทุกบัญชีมีสิทธิ์ผู้ดูแลระบบ

); }