import { useState } from "react";
import { Button, Stack } from "@mui/material";
import { GenericDialog } from "@/Components/v1/Dialog/genericDialog";
import TextInput from "@/Components/v1/Inputs/TextInput";
import PasswordTooltip from "@/Pages/v1/Auth/components/PasswordTooltip";
import { useTheme } from "@emotion/react";
import { useTranslation } from "react-i18next";
import { createToast } from "../../../../Utils/toastUtils";
import { PasswordEndAdornment } from "@/Components/v1/Inputs/TextInput/Adornments";
import usePasswordFeedback from "@/Pages/v1/Auth/hooks/usePasswordFeedback";
import PropTypes from "prop-types";
const ChangePasswordModal = ({ isSaving, isLoading, changePassword }) => {
const INITIAL_FORM_STATE = {
password: "",
confirm: "",
};
const theme = useTheme();
const { t } = useTranslation();
const { feedback, handlePasswordFeedback } = usePasswordFeedback();
const [form, setForm] = useState(INITIAL_FORM_STATE);
const [isChangePasswordOpen, setIsChangePasswordOpen] = useState(false);
const [errors, setErrors] = useState({});
const [isLoadingSubmit, setIsLoadingSubmit] = useState(false);
const closeChangePasswordModal = () => {
setIsChangePasswordOpen(false);
setForm(INITIAL_FORM_STATE);
};
const onChange = (e) => {
let { name, value } = e.target;
const updatedForm = { ...form, [name]: value };
setForm(updatedForm);
handlePasswordFeedback(updatedForm, name, value, form, errors, setErrors);
};
const isFormValid =
form.password.length > 1 &&
form.confirm.length > 1 &&
!errors.password &&
!errors.confirm;
const onsubmitChangePassword = async (event) => {
event.preventDefault();
if (!isFormValid) return;
const newPasswordForm = {
password: form.password,
};
try {
setIsLoadingSubmit(true);
await changePassword(newPasswordForm);
closeChangePasswordModal();
} catch (error) {
const errorMsg = error.response?.data?.msg || error.message || "unknownError";
createToast({
type: "error",
body: t(errorMsg),
});
} finally {
setIsLoadingSubmit(false);
}
};
return (
<>
}
sx={{ mb: theme.spacing(5) }}
/>
}
sx={{ mb: theme.spacing(5) }}
/>
>
);
};
ChangePasswordModal.propTypes = {
isSaving: PropTypes.bool.isRequired,
isLoading: PropTypes.bool.isRequired,
changePassword: PropTypes.func.isRequired,
};
export default ChangePasswordModal;