"use client"; import LOGO from "@/assets/logo.png"; import type { LoginRequest } from "@/features/auth/lib"; import { userInfoStore } from "@/shared/hooks/user-info"; import { Button } from "@/shared/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/shared/ui/card"; import { Form, FormControl, FormField, FormItem, FormMessage, } from "@/shared/ui/form"; import { Input } from "@/shared/ui/input"; import { Label } from "@/shared/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/shared/ui/select"; import { zodResolver } from "@hookform/resolvers/zod"; import { useMutation, useQuery } from "@tanstack/react-query"; import { AxiosError } from "axios"; import { Loader2 } from "lucide-react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import z from "zod"; import { auth_api } from "../lib/api"; import { loginform } from "../lib/form"; export default function LoginForm() { const { user, setLoginUser } = userInfoStore(); const form = useForm>({ resolver: zodResolver(loginform), defaultValues: { firstName: "", lastName: "", regions: "", }, }); const { data: regions } = useQuery({ queryKey: ["region"], queryFn: () => auth_api.getRegions(), select(data) { return data.data.data; }, }); const { mutate, isPending } = useMutation({ mutationFn: (body: LoginRequest) => auth_api.create(body), onSuccess: () => { toast.success("Siz ro'yxatdan o'tingiz"); setLoginUser({ active: false, first_name: form.getValues("firstName"), last_name: form.getValues("lastName"), }); }, onError: (error: AxiosError) => { const data = error.response?.data as { message?: string }; const errorData = error.response?.data as { messages?: { token_class: string; token_type: string; message: string; }[]; }; const errorName = error.response?.data as { data?: { name: string[]; }; }; const message = Array.isArray(errorName.data?.name) && errorName.data.name.length ? errorName.data.name[0] : data?.message || (Array.isArray(errorData?.messages) && errorData.messages.length ? errorData.messages[0].message : undefined) || "Xatolik yuz berdi"; toast.error(message); }, }); function handleSubmit(value: z.infer) { mutate({ first_name: value.firstName, last_name: value.lastName, region: Number(value.regions), telegram_id: user.user_id, }); } return (
logo Tizimga xush kelibsiz
( )} /> ( )} /> ( )} />
); }