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"; import Link from "next/link"; import { signIn } from "next-auth/react"; type Props = { onClose: Function; }; type FormData = { username?: string; email?: string; invite: boolean; }; const emailEnabled = process.env.NEXT_PUBLIC_EMAIL_PROVIDER === "true"; export default function InviteModal({ onClose }: Props) { const { t } = useTranslation(); const addUser = useAddUser(); const [form, setForm] = useState({ username: emailEnabled ? undefined : "", email: emailEnabled ? "" : undefined, invite: true, }); const [submitLoader, setSubmitLoader] = useState(false); async function submit(event: FormEvent) { event.preventDefault(); if (!submitLoader) { const checkFields = () => { if (emailEnabled) { return form.email !== ""; } else { return form.username !== ""; } }; if (checkFields()) { setSubmitLoader(true); await addUser.mutateAsync(form, { onSettled: () => { setSubmitLoader(false); }, onSuccess: async () => { await signIn("invite", { email: form.email, callbackUrl: "/member-onboarding", redirect: false, }); onClose(); }, }); } else { toast.error(t("fill_all_fields_error")); } } } return (

{t("invite_user")}

{t("invite_user_desc")}

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

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

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

{t("invite_user_note")}

{t("learn_more")}
); }