import { useRef, useState } from "react"; import { titleCase } from "text-case"; import Admin from "@/models/admin"; import EditUserModal from "./EditUserModal"; import showToast from "@/utils/toast"; import { useModal } from "@/hooks/useModal"; import ModalWrapper from "@/components/ModalWrapper"; import moment from 'moment'; const ModMap = { admin: ["admin", "manager", "default"], manager: ["manager", "default"], default: [], }; export default function UserRow({ currUser, user }) { const rowRef = useRef(null); const canModify = ModMap[currUser?.role || "default"].includes(user.role); const [suspended, setSuspended] = useState(user.suspended === 1); const { isOpen, openModal, closeModal } = useModal(); const handleSuspend = async () => { if ( !window.confirm( `您确定要删除吗 ${user.username}?\n在您这样做之后,它们将被注销,并且无法重新登录` ) ) return false; const { success, error } = await Admin.updateUser(user.id, { suspended: suspended ? 0 : 1, }); if (!success) showToast(error, "error", { clear: true }); if (success) { showToast( `User ${!suspended ? "has been suspended" : "is no longer suspended"}.`, "success", { clear: true } ); setSuspended(!suspended); } }; const handleDelete = async () => { if ( !window.confirm( `您确定要删除吗 ${user.username}?\n在您这样做之后,它们将被注销,并且无法重新登录` ) ) return false; const { success, error } = await Admin.deleteUser(user.id); if (!success) showToast(error, "error", { clear: true }); if (success) { rowRef?.current?.remove(); showToast("User deleted from system.", "success", { clear: true }); } }; return ( <> {user.username} {titleCase(user.role)} {new Date(user.createdAt).toLocaleDateString()} {canModify && ( )} {currUser?.id !== user.id && canModify && ( <> )} ); }