import {BASE_URL, createRequestConfig, handleResponse} from "./BaseApi.ts"; interface IAuthData{ email: string; password: string; } interface IRegistrationData extends IAuthData{ username: string; firstName: string; lastName: string; } // // interface IUserData{ // username: string; // firstName: string; // lastName: string; // email: string; // } export const getCurrentUser = async (): Promise => { const token = localStorage.getItem("token"); if (!token) { throw new Error("Токен отсутствует"); } try { const response = await fetch(`${BASE_URL}/auth/me`, { ...createRequestConfig('GET'), headers: { 'Authorization': `Bearer ${token}` } }); if (response.status === 401) { localStorage.removeItem("token"); throw new Error("Сессия истекла. Пожалуйста, войдите снова."); } if (!response.ok) { throw new Error(`Ошибка сервера: ${response.status}`); } const userData = await handleResponse(response); localStorage.setItem("user", JSON.stringify(userData)); return userData; } catch (error) { console.error("Ошибка при получении данных пользователя:", error); throw error; } }; export const registerUser = async (data: IRegistrationData) => { try{ const response = await fetch(`${BASE_URL}/auth/register`, { ...createRequestConfig('POST'), body: JSON.stringify(data), }) const responseData = await handleResponse(response); if (responseData.accessToken) { localStorage.setItem("token", responseData.accessToken); localStorage.setItem("user", JSON.stringify({ firstName: data.firstName, lastName: data.lastName })); } return responseData; } catch (error){ console.error("Registration error:", error); throw error; } } export const authUser = async (data: IAuthData) => { try { const response = await fetch(`${BASE_URL}/auth/login`, { ...createRequestConfig('POST'), body: JSON.stringify(data), }); const responseData = await handleResponse(response); const token = responseData.accessToken || responseData.token; if (token) { localStorage.setItem("token", token); const user = localStorage.getItem("user"); if (!responseData.user && user) { responseData.user = JSON.parse(user); } if (responseData.user) { localStorage.setItem("user", JSON.stringify(responseData.user)); } } return responseData; } catch (error) { console.error("Login error:", error); throw error; } };