import { useRouter } from "@tanstack/react-router"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage, } from "@/components/ui/form"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Spinner } from "@/components/ui/spinner"; import { initUserPassword } from "@/apis/user"; import { useMutation } from "@tanstack/react-query"; import { toast } from "sonner"; import logo from "@/assets/image/logo.png"; import { useUserStore } from "@/stores/user"; const formSchema = z.object({ rePassword: z.string().nonempty({ message: "确认密码不能为空", }), password: z.string().nonempty({ message: "密码不能为空", }), }); const title = import.meta.env.VITE_APP_TITLE; export function InitPassword() { const router = useRouter(); const user = useUserStore((state) => state.user); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { password: "", rePassword: "", }, }); const { mutateAsync, isPending } = useMutation({ mutationFn: initUserPassword, onSuccess() { router.navigate({ to: "/", replace: true }); }, }); const onSubmit = (values: z.infer) => { toast.promise(mutateAsync({ ...values, username: user?.username }), { loading: "提交中...", success: "设置成功", }); }; return (
{title}
设置密码
( 密码 )} /> ( 确认密码 )} />
); }