import { Box, Button, Container, FormControl, FormErrorMessage, FormLabel, Heading, Input, useColorModeValue, } from "@chakra-ui/react" import { useMutation } from "@tanstack/react-query" import { type SubmitHandler, useForm } from "react-hook-form" import { type ApiError, type UpdatePassword, UsersService } from "../../client" import useCustomToast from "../../hooks/useCustomToast" import { confirmPasswordRules, passwordRules } from "../../utils" interface UpdatePasswordForm extends UpdatePassword { confirm_password: string } const ChangePassword = () => { const color = useColorModeValue("inherit", "ui.light") const showToast = useCustomToast() const { register, handleSubmit, reset, getValues, formState: { errors, isSubmitting }, } = useForm({ mode: "onBlur", criteriaMode: "all", }) const mutation = useMutation({ mutationFn: (data: UpdatePassword) => UsersService.updatePasswordMe({ requestBody: data }), onSuccess: () => { showToast("Success!", "Password updated successfully.", "success") reset() }, onError: (err: ApiError) => { const errDetail = (err.body as any)?.detail showToast("Something went wrong.", `${errDetail}`, "error") }, }) const onSubmit: SubmitHandler = async (data) => { mutation.mutate(data) } return ( <> Change Password Current Password {errors.current_password && ( {errors.current_password.message} )} Set Password {errors.new_password && ( {errors.new_password.message} )} Confirm Password {errors.confirm_password && ( {errors.confirm_password.message} )} ) } export default ChangePassword