import { Button, Stack } from "@mui/material"; import { GenericDialog } from "../../../../Components/Dialog/genericDialog"; import TextInput from "../../../../Components/Inputs/TextInput"; import Select from "../../../../Components/Inputs/Select"; import { useGetInviteToken } from "../../../../Hooks/inviteHooks"; import { useTheme } from "@emotion/react"; import { useTranslation } from "react-i18next"; import { createToast } from "../../../../Utils/toastUtils"; import { useState } from "react"; import PasswordTooltip from "../../../Auth/components/PasswordTooltip"; import useAddTeamMember from "./hooks/useAddTeamMember"; import usePasswordFeedback from "../../../Auth/hooks/usePasswordFeedback"; import { PasswordEndAdornment } from "../../../../Components/Inputs/TextInput/Adornments"; import PropTypes from "prop-types"; const INITIAL_FORM_STATE = { firstName: "", lastName: "", email: "", password: "", confirm: "", teamId: "", }; const INITIAL_ROLE_STATE = ["user"]; const AddTeamMember = ({ handleIsRegisterOpen, isRegisterOpen, onMemberAdded }) => { const theme = useTheme(); const { t } = useTranslation(); const { errors, setErrors, clearErrors, validateFields, validateForm } = useAddTeamMember(); const { feedback, handlePasswordFeedback } = usePasswordFeedback(); const [getInviteToken, clearToken, isLoading, error, token, addTeamMember] = useGetInviteToken(); const [form, setForm] = useState(INITIAL_FORM_STATE); const [role, setRole] = useState(INITIAL_ROLE_STATE); const [isLoadingSubmit, setIsLoadingSubmit] = useState(false); const closeAddMemberModal = () => { handleIsRegisterOpen(false); setForm(INITIAL_FORM_STATE); setRole(INITIAL_ROLE_STATE); clearErrors(); clearToken(); }; const onChange = (e) => { let { name, value } = e.target; if (name === "email") value = value.toLowerCase(); const updatedForm = { ...form, [name]: value }; validateFields(name, value, updatedForm); setForm(updatedForm); if (name === "password" || name === "confirm") { handlePasswordFeedback(updatedForm, name, value, form, errors, setErrors); } }; const onsubmitAddMember = async (event) => { event.preventDefault(); if (!validateForm(form, role)) return; setIsLoadingSubmit(true); try { await addTeamMember(form, role); createToast({ body: t("teamPanel.registerToast.success"), }); onMemberAdded(); closeAddMemberModal(); } catch (error) { const errorMsg = error.response?.data?.msg || error.message || "unknownError"; createToast({ type: "error", body: t(errorMsg), }); } finally { setIsLoadingSubmit(false); } }; const tErr = (key) => (key ? t([`teamPanel.registerTeamMember.${key}`, key]) : ""); return ( <>