import { useForm, SubmitHandler } from "react-hook-form" import { rpc } from "../api" import { z } from "zod" import { zodResolver } from "@hookform/resolvers/zod" import { Layout2 } from "@/components/Layout2" import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter, } from "@/components/ui/card" import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Button } from "@/components/ui/button" import { ArrowLeft, EyeOffIcon, EyeIcon } from "lucide-react" import { cn } from "@/lib/utils" import { useNavigate } from "react-router-dom" import { useState } from "react" import { Header } from "../components" const changePasswordSchema = z .object({ currentPassword: z.string().min(1, "Current password is required"), newPassword: z.string().min(1, "New password is required"), newPasswordConfirm: z.string(), }) .refine((data) => data.newPassword === data.newPasswordConfirm, { message: "New password and confirm new password must match", path: ["newPasswordConfirm"], }) type FormFields = z.infer export const ChangePassword = () => { const navigate = useNavigate() const [showCurrentPassword, setShowCurrentPassword] = useState(false) const [showNewPassword, setShowNewPassword] = useState(false) const [showConfirmNewPassword, setShowConfirmNewPassword] = useState(false) const form = useForm({ resolver: zodResolver(changePasswordSchema), }) const { handleSubmit, reset, formState: { isSubmitting }, control, setError, } = form const onSubmit: SubmitHandler = async ({ currentPassword, newPassword, }) => { try { // await rpc.client.changePassword(currentPassword, newPassword) reset() navigate("/settings") } catch (e) { setError("currentPassword", { type: "server", message: "Current password is incorrect", }) } } return (
Change Password (
{fieldState.invalid && fieldState.error?.message && ( {fieldState.error?.message} )}
)} /> (
{fieldState.invalid && fieldState.error?.message && ( {fieldState.error?.message} )}
)} /> (
{fieldState.invalid && fieldState.error?.message && ( {fieldState.error?.message} )}
)} />
) }