import { useState } from 'react'; import { authenticate, validateToken, refreshToken, type AuthSession, } from '../api'; export default function useAuth() { const [status, setStatus] = useState< 'idle' | 'validating' | 'refreshing' | 'authenticating' | 'error' >('idle'); // Аутентификация (HTTP напрямую, без IPC!) const authenticateUser = async ( username: string, password: string, saveConfigFunc: (config: any) => void, ): Promise => { try { setStatus('authenticating'); // Прямой HTTP-запрос к вашему серверу const session = await authenticate(username, password); await applySession(session, saveConfigFunc); return session; } catch (error) { console.error('Ошибка при аутентификации:', error); setStatus('error'); throw error; } }; const applySession = async ( session: AuthSession, saveConfigFunc: (config: any) => void, ) => { saveConfigFunc({ username: session.selectedProfile.name, uuid: session.selectedProfile.id, accessToken: session.accessToken, clientToken: session.clientToken, memory: 4096, }); await window.electron.ipcRenderer.invoke('auth-changed', { isAuthed: true, minecraftSession: session, }); }; // Валидация токена (HTTP напрямую) const validateSession = async (accessToken: string): Promise => { try { setStatus('validating'); // Получаем clientToken из localStorage const savedConfig = localStorage.getItem('launcher_config'); if (!savedConfig) return false; const config = JSON.parse(savedConfig); // Прямой HTTP-запрос на валидацию const isValid = await validateToken(accessToken, config.clientToken); setStatus('idle'); return isValid; } catch (error) { console.error('Ошибка при валидации токена:', error); setStatus('error'); return false; } }; // Обновление токена (HTTP напрямую) const refreshSession = async ( accessToken: string, clientToken: string, ): Promise => { try { setStatus('refreshing'); // Прямой HTTP-запрос на обновление const session = await refreshToken(accessToken, clientToken); setStatus('idle'); return session; } catch (error) { console.error('Ошибка при обновлении токена:', error); setStatus('error'); throw error; } }; return { status, authenticateUser, validateSession, refreshSession, applySession, }; }