import { Button, Stack } from "@mui/material"; import { GenericDialog } from "@/Components/v1/Dialog/genericDialog.jsx"; import TextInput from "@/Components/v1/Inputs/TextInput/index.jsx"; import Select from "@/Components/v1/Inputs/Select/index.jsx"; import { useGetInviteToken } from "../../../../Hooks/inviteHooks.js"; import { useTheme } from "@emotion/react"; import { useTranslation } from "react-i18next"; import { createToast } from "../../../../Utils/toastUtils.jsx"; import { useState } from "react"; import PasswordTooltip from "../../../Auth/components/PasswordTooltip.jsx"; import useAddTeamMember from "./hooks/useAddTeamMember.jsx"; import usePasswordFeedback from "../../../Auth/hooks/usePasswordFeedback.jsx"; import { PasswordEndAdornment } from "@/Components/v1/Inputs/TextInput/Adornments/index.jsx"; 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; try { setIsLoadingSubmit(true); 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 ( <>