import toast from "react-hot-toast"; import Modal from "../Modal"; import useUserStore from "@/store/admin/users"; import TextInput from "../TextInput"; import { FormEvent, useState } from "react"; type Props = { onClose: Function; }; type FormData = { name: string; username?: string; email?: string; password: string; }; const emailEnabled = process.env.NEXT_PUBLIC_EMAIL_PROVIDER === "true"; export default function NewUserModal({ onClose }: Props) { const { addUser } = useUserStore(); const [form, setForm] = useState({ name: "", username: "", email: emailEnabled ? "" : undefined, password: "", }); const [submitLoader, setSubmitLoader] = useState(false); async function submit(event: FormEvent) { event.preventDefault(); if (!submitLoader) { const checkFields = () => { if (emailEnabled) { return form.name !== "" && form.email !== "" && form.password !== ""; } else { return ( form.name !== "" && form.username !== "" && form.password !== "" ); } }; if (checkFields()) { if (form.password.length < 8) return toast.error("Passwords must be at least 8 characters."); setSubmitLoader(true); const load = toast.loading("Creating Account..."); const response = await addUser(form); toast.dismiss(load); setSubmitLoader(false); if (response.ok) { toast.success("User Created!"); onClose(); } else { toast.error(response.data as string); } } else { toast.error("Please fill out all the fields."); } } } return (

Create New User

Display Name

setForm({ ...form, name: e.target.value })} value={form.name} />
{emailEnabled ? (

Email

setForm({ ...form, email: e.target.value })} value={form.email} />
) : undefined}

Username{" "} {emailEnabled && ( (Optional) )}

setForm({ ...form, username: e.target.value })} value={form.username} />

Password

setForm({ ...form, password: e.target.value })} value={form.password} />
Note: Please make sure you inform the user that they need to change their password.
); }