import { Box, Button, Container, Heading, VStack } from "@chakra-ui/react" import { useMutation } from "@tanstack/react-query" import { type SubmitHandler, useForm } from "react-hook-form" import { FiLock } from "react-icons/fi" import { type ApiError, type UpdatePassword, UsersService } from "../../client" import useCustomToast from "../../hooks/useCustomToast" import { confirmPasswordRules, handleError, passwordRules } from "../../utils" import { PasswordInput } from "../ui/password-input" interface UpdatePasswordForm extends UpdatePassword { confirm_password: string } const ChangePassword = () => { const { showSuccessToast } = useCustomToast() const { register, handleSubmit, reset, getValues, formState: { errors, isValid, isSubmitting }, } = useForm({ mode: "onBlur", criteriaMode: "all", }) const mutation = useMutation({ mutationFn: (data: UpdatePassword) => UsersService.updatePasswordMe({ requestBody: data }), onSuccess: () => { showSuccessToast("Password updated successfully.") reset() }, onError: (err: ApiError) => { handleError(err) }, }) const onSubmit: SubmitHandler = async (data) => { mutation.mutate(data) } return ( <> Change Password } {...register("current_password", passwordRules())} placeholder="Current Password" errors={errors} /> } {...register("new_password", passwordRules())} placeholder="New Password" errors={errors} /> } {...register("confirm_password", confirmPasswordRules(getValues))} placeholder="Confirm Password" errors={errors} /> ) } export default ChangePassword