/* eslint-disable @typescript-eslint/no-explicit-any */ import ky from "ky"; import useAuthStore from "./stores/useAuthStore"; import { FormEvent, useRef, useState } from "react"; type User = { id: string; username: string; }; interface IResult { error?: number; accessToken?: string; user?: User; } function PersonalAreaLoginPage() { const [setAccessToken, setUser] = useAuthStore((state) => [ state.setAccessToken, state.setUser, ]); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(null); const [isLoading, setIsLoading] = useState(false); const usernameRef = useRef(null); const passwordRef = useRef(null); async function auth(e: FormEvent) { e.preventDefault(); setIsLoading(true); try { const result: IResult = await ky .post(import.meta.env.VITE_COORD_URL + "/login", { json: { username, password }, }) .json(); setIsLoading(false); if (result.error) { passwordRef.current?.focus(); setPassword(""); setError("Неверное имя пользователя или пароль"); return; } if (!result.accessToken || !result.user) { setError("Не удалось получить данные"); return; } setAccessToken(result.accessToken); setUser(result.user); } catch (error) { setIsLoading(false); if (error instanceof Error) { if (error.message === "Failed to fetch") { setError("Нет соединения с сервером, попробуйте позже"); } else { setError(error.message); } } } } return (

Вход в личный кабинет

Имя пользователя

setUsername(e.target.value)} className="px-3 py-2 rounded bg-[#1C1D21] outline-none focus:outline-[#BC75FF] w-full transition-all" />

Пароль

setPassword(e.target.value)} className="px-3 py-2 rounded bg-[#1C1D21] outline-none focus:outline-[#BC75FF] w-full transition-all" />

{error && error}

); } export default PersonalAreaLoginPage;