"use client"; import AuthInput from "@/features/AuthInput/AuthInput"; import "./ResetCodeForm.scss"; import { useState } from "react"; import { apiInstance } from "@/shared/config/apiConfig"; import { ITokens } from "@/shared/types/token-type"; import Loader from "@/shared/ui/components/Loader/Loader"; import { useRouter } from "@/shared/config/navigation"; import { AxiosError } from "axios"; const ResetCodeForm = () => { const [passwordWarning, setPasswordWarning] = useState(""); const [passwordConfirmWarning, setPasswordConfirmWarning] = useState(""); const [error, setError] = useState(""); const [loader, setLoader] = useState(false); const router = useRouter(); const handleSubmit: React.MouseEventHandler< HTMLFormElement > = async (e) => { e.preventDefault(); const formData = new FormData(e.currentTarget); if (!formData.get("new_password1")) { setError(""); setPasswordConfirmWarning(""); setPasswordWarning("Заполните поле с новым паролем"); return; } if (!formData.get("new_password1")) { setError(""); setPasswordWarning(""); setPasswordConfirmWarning( "Заполните поле с новым паролем потверждения" ); return; } try { setError(""); setPasswordWarning(""); setPasswordConfirmWarning(""); setLoader(true); const storage = localStorage.getItem("transitional"); if (storage === null) return; const transitional: ITokens = JSON.parse(storage); const Authorization = `Bearer ${transitional.access_token}`; const config = { headers: { Authorization, }, }; const response = await apiInstance.put( "/users/password_reset/confirm/", formData, config ); if ([200, 201].includes(response.status)) { localStorage.removeItem("transitional"); router.push("/sign-in"); } } catch (error) { if (error instanceof AxiosError) { if ( [500, 501, 502, 503, 504].includes( error.response?.status as number ) ) { setError("Ошибка на стороне сервера"); } else if ( [400, 404].includes(error.response?.status as number) ) { setError( "Слабый пароль, прошу избегайте очевидных паролей" ); } } else { setError("Произошла непредвиденная ошибка"); } } finally { setLoader(false); } }; return (
{error ? (

{error}

) : null}
); }; export default ResetCodeForm;