import toast from "react-hot-toast"; import Modal from "../Modal"; import TextInput from "../TextInput"; import { FormEvent, useState } from "react"; import { useTranslation, Trans } from "next-i18next"; import { useAddUser } from "@/hooks/store/admin/users"; 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 { t } = useTranslation(); const addUser = useAddUser(); 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()) { setSubmitLoader(true); await addUser.mutateAsync(form, { onSuccess: () => { onClose(); }, }); setSubmitLoader(false); } else { toast.error(t("fill_all_fields_error")); } } } return (

{t("create_new_user")}

{t("display_name")}

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

{t("email")}

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

{t("username")}{" "} {emailEnabled && ( {t("optional")} )}

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

{t("password")}

setForm({ ...form, password: e.target.value })} value={form.password} />
]} />
); }