import { ChangeEvent, useEffect, useState, FC } from "react"; import styled from "styled-components"; import toast from "react-hot-toast"; import Input from "../../common/component/styled/Input"; import { useUpdatePasswordMutation, useGetCredentialsQuery } from "../../app/services/auth"; import StyledModal from "../../common/component/styled/Modal"; import Button from "../../common/component/styled/Button"; import Modal from "../../common/component/Modal"; const StyledEdit = styled(StyledModal)` .input { margin: 16px 0; width: 100%; display: flex; flex-direction: column; gap: 8px; label { font-weight: 600; font-size: 14px; line-height: 20px; color: #6b7280; } } `; interface Props { closeModal: () => void; } interface BaseForm { current: string; newPassword: string; confirmPassword: string; } const ProfileBasicEditModal: FC = ({ closeModal }) => { const { data } = useGetCredentialsQuery(); const [input, setInput] = useState({ current: "", newPassword: "", confirmPassword: "" }); // const dispatch = useDispatch(); const [updatePassword, { isLoading, isSuccess }] = useUpdatePasswordMutation(); const handleChange = (evt: ChangeEvent) => { const { type } = evt.target.dataset as { type: keyof BaseForm }; setInput((prev) => { return { ...prev, [type]: evt.target.value }; }); }; const handleUpdate = () => { const { current, newPassword } = input; updatePassword({ old_password: current, new_password: newPassword }); }; const handleCompare = () => { const { newPassword, confirmPassword } = input; if (newPassword !== confirmPassword) { toast.error("Not same with new password"); } }; useEffect(() => { if (isSuccess) { // todo toast.success("update password successfully"); closeModal(); } }, [isSuccess]); const { current, newPassword, confirmPassword } = input; const disableBtn = (data?.password && !current) || !newPassword || !confirmPassword || newPassword !== confirmPassword || isLoading; return ( } > {data?.password && (
)}
); }; export default ProfileBasicEditModal;