import { api } from '../apiClient'; import type { AuthenticatedUserDTO, AuthSessionDTO, SignupParams, LoginParams, IracingAuthRedirectResult, LoginWithIracingCallbackParams, } from '../../../apps/api/src/modules/auth/dto/AuthDto'; // Using generated API DTOs export class AuthApiClient { async getCurrentSession(): Promise { try { return await api.get('/auth/session'); } catch (error) { // Handle error, e.g., if session is not found or API is down console.error('Error fetching current session:', error); return null; } } async signupWithEmail(params: SignupParams): Promise { return api.post('/auth/signup', params); } async loginWithEmail(params: LoginParams): Promise { return api.post('/auth/login', params); } async startIracingAuthRedirect(returnTo?: string): Promise { const query = returnTo ? `?returnTo=${encodeURIComponent(returnTo)}` : ''; return api.get(`/auth/iracing/start${query}`); } async loginWithIracingCallback(params: LoginWithIracingCallbackParams): Promise { const query = new URLSearchParams(); query.append('code', params.code); query.append('state', params.state); if (params.returnTo) { query.append('returnTo', params.returnTo); } return await api.get(`/auth/iracing/callback?${query.toString()}`); } async logout(): Promise { return api.post('/auth/logout', {}); } } export const authApiClient = new AuthApiClient();