import { useEffect, useRef, useState } from "react"; import { titleCase } from "text-case"; import Admin from "@/models/admin"; import { Trash } from "@phosphor-icons/react"; export default function InviteRow({ invite }) { const rowRef = useRef(null); const [status, setStatus] = useState(invite.status); const [copied, setCopied] = useState(false); const handleDelete = async () => { if ( !window.confirm( `Are you sure you want to deactivate this invite?\nAfter you do this it will not longer be useable.\n\nThis action is irreversible.` ) ) return false; if (rowRef?.current) { rowRef.current.children[0].innerText = "Disabled"; } setStatus("disabled"); await Admin.disableInvite(invite.id); }; const copyInviteLink = () => { if (!invite) return false; window.navigator.clipboard.writeText( `${window.location.origin}/accept-invite/${invite.code}` ); setCopied(true); }; useEffect(() => { function resetStatus() { if (!copied) return false; setTimeout(() => { setCopied(false); }, 3000); } resetStatus(); }, [copied]); return ( <> {titleCase(status)} {invite.claimedBy ? invite.claimedBy?.username || "deleted user" : "--"} {invite.createdBy?.username || "deleted user"} {invite.createdAt} {status === "pending" && ( <> )} ); }