"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, useZodForm } from "@/components/ui/form"; import { Loader2 } from "lucide-react"; import { PasswordStrengthInput } from "@/components/ui/password-input-indicator"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { useMutation } from "@tanstack/react-query"; import { useRouter } from "next/navigation"; import { toast } from "sonner"; import { authClient } from "@/lib/auth/auth-client"; import { ResetPasswordSecuritySchema, ResetPasswordSecuritySchemaType } from "./security.schema"; import {PasswordInput} from "@/components/ui/password-input"; type ResetPasswordFormProps = { onSuccess?: () => void; isDefault?: boolean; }; export default function ResetPasswordForm({ onSuccess, isDefault }: ResetPasswordFormProps) { const router = useRouter(); const [allowConfirmPassword, setAllowConfirmPassword] = useState(false); const form = useZodForm({ schema: ResetPasswordSecuritySchema, }); const { mutate: changePassword, isPending: isChangingPassword } = useMutation({ mutationFn: async (values: ResetPasswordSecuritySchemaType) => { const { error } = await authClient.changePassword({ currentPassword: values.currentPassword, newPassword: values.newPassword, revokeOtherSessions: true, }); // await authClient.updateUser({ // isDefaultPassword: false, // }); if (error) throw error; }, onSuccess: () => { toast.success("Password reset successfully."); form.reset(); router.refresh(); setAllowConfirmPassword(false); if (onSuccess) { onSuccess(); } }, onError: () => { toast.error("Failed to reset password."); }, }); return (
); }