import { Dispatch, SetStateAction, useEffect, useState } from "react"; import { AccountSettings } from "@/types/global"; import useAccountStore from "@/store/account"; import { useSession } from "next-auth/react"; import { faPenToSquare } from "@fortawesome/free-regular-svg-icons"; import SubmitButton from "@/components/SubmitButton"; import { toast } from "react-hot-toast"; type Props = { togglePasswordFormModal: Function; setUser: Dispatch>; user: AccountSettings; }; export default function ChangePassword({ togglePasswordFormModal, setUser, user, }: Props) { const [oldPassword, setOldPassword] = useState(""); const [newPassword, setNewPassword1] = useState(""); const [newPassword2, setNewPassword2] = useState(""); const [submitLoader, setSubmitLoader] = useState(false); const { account, updateAccount } = useAccountStore(); const { update } = useSession(); useEffect(() => { if ( !(oldPassword == "" || newPassword == "" || newPassword2 == "") && newPassword === newPassword2 ) { setUser({ ...user, oldPassword, newPassword }); } }, [oldPassword, newPassword, newPassword2]); const submit = async () => { if (oldPassword == "" || newPassword == "" || newPassword2 == "") { toast.error("Please fill all the fields."); } else if (newPassword === newPassword2) { setSubmitLoader(true); const load = toast.loading("Applying..."); const response = await updateAccount({ ...user, }); toast.dismiss(load); if (response.ok) { toast.success("Settings Applied!"); togglePasswordFormModal(); } else toast.error(response.data as string); setSubmitLoader(false); if (user.email !== account.email || user.name !== account.name) update({ email: user.email, name: user.name }); if (response.ok) { setUser({ ...user, oldPassword: undefined, newPassword: undefined }); togglePasswordFormModal(); } } else { toast.error("Passwords do not match."); } }; return (

Old Password

setOldPassword(e.target.value)} type="password" className="w-full rounded-md p-3 mx-auto border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

New Password

setNewPassword1(e.target.value)} type="password" className="w-full rounded-md p-3 mx-auto border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />

Re-enter New Password

setNewPassword2(e.target.value)} type="password" className="w-full rounded-md p-3 mx-auto border-sky-100 border-solid border outline-none focus:border-sky-500 duration-100" />
); }