"use client"; import { AxiosError } from "axios"; import Loader from "@/shared/ui/Loader/Loader"; import { apiInstance } from "@/shared/config/apiConfig"; import { z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { useRouter } from "next/navigation"; import React from "react"; import alert from "./icons/alert-circle.svg"; import Image from "next/image"; import eye_off from "./icons/eye-off.svg"; import eye_on from "./icons/eye-on.svg"; const SignUpForm = () => { const [resError, setResError] = React.useState(""); const [loader, setLoader] = React.useState(false); const [showPassword, setShowPassword] = React.useState(false); const [showPasswordTwo, setShowPasswordTwo] = React.useState(false); const router = useRouter(); const signUpFormScheme = z .object({ email: z.string().email("Неверный формат email"), password: z.string().min(8, "Пароль должен содержать минимум 8 символов"), password_repeat: z .string() .min(8, "Пароль должен содержать минимум 8 символов"), }) .refine((data) => data.password === data.password_repeat, { message: "Пароли не совпадают", path: ["password_repeat"], }); type FormFields = z.infer; const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(signUpFormScheme), }); const onSubmit = async (data: FormFields) => { try { const res = await apiInstance.post("/auth/register/", data); const encodedEmail = encodeURIComponent(data.email); console.log(encodedEmail); if ([200, 201].includes(res.status)) { router.push(`sign-up/confirm-email?email=${encodedEmail}`); } } catch (error: unknown) { if (error instanceof AxiosError) { if ([401, 400].includes(error.response?.status as number)) { setResError("Такой пользователь уже существует"); } else if (error.response?.status.toString().slice(0, 1) === "5") { setResError("Ошибка на стороне сервера"); } } else { setResError("Непредвиденная ошибка"); } } finally { setLoader(false); } }; return (
{errors?.email?.message && (

{errors.email.message} Alert Icon

)}
{errors?.password?.message && (

{errors.password.message} Alert Icon

)}
{errors?.password_repeat?.message && (

{errors.password_repeat.message}{" "} Alert Icon

)}
{errors.root && (

{errors.root.message}

)} {resError &&

{resError}

}
); }; export default SignUpForm;