diff --git a/src/App.tsx b/src/App.tsx index decbaff..fac0fc3 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -39,7 +39,9 @@ const AppContent: React.FC = () => { useEffect(() => { // Инициализируем ID пользователя при запуске приложения - initializeUserId(); + initializeUserId().catch(error => { + console.error('Ошибка при инициализации пользователя:', error); + }); // Стабилизируем окно и отключаем вертикальные свайпы if (window.Telegram?.WebApp) { diff --git a/src/constants/user.ts b/src/constants/user.ts index a4eb555..36ff464 100644 --- a/src/constants/user.ts +++ b/src/constants/user.ts @@ -17,13 +17,43 @@ export const isTelegramWebAppAvailable = (): boolean => { ); }; +// Импортируем apiService для регистрации пользователя +import apiService from '../services/api'; + /** * Инициализация ID пользователя при старте приложения */ -export const initializeUserId = (): void => { +export const initializeUserId = async (): Promise => { if (isTelegramWebAppAvailable() && window.Telegram?.WebApp?.initDataUnsafe?.user?.id) { CURRENT_USER_ID = window.Telegram.WebApp.initDataUnsafe.user.id; console.log('Инициализирован ID пользователя Telegram:', CURRENT_USER_ID); + + // Проверяем, зарегистрирован ли пользователь + try { + // Пытаемся получить информацию о пользователе + await apiService.getUserInfo(CURRENT_USER_ID); + console.log('Пользователь уже зарегистрирован'); + } catch (error) { + // Если пользователь не найден, регистрируем его + console.log('Пользователь не найден, выполняем регистрацию...'); + + const userInfo = getUserInfo(); + // Используем ID пользователя в качестве chat_id, так как chat_instance недоступен + const chatId = CURRENT_USER_ID; + + try { + // Регистрируем пользователя с начальным балансом 50 + await apiService.registerUser( + CURRENT_USER_ID, + userInfo.username || `user_${CURRENT_USER_ID}`, + chatId, + 50 + ); + console.log('Пользователь успешно зарегистрирован'); + } catch (registerError) { + console.error('Ошибка при регистрации пользователя:', registerError); + } + } } else { console.log('Используется тестовый ID пользователя:', DEFAULT_USER_ID); } diff --git a/src/services/api.ts b/src/services/api.ts index ecc7372..9ecba7d 100644 --- a/src/services/api.ts +++ b/src/services/api.ts @@ -54,6 +54,34 @@ class GenerationError extends Error { let mockBalance = 50; // Начальное значение из MOCK_USER const apiService = { + // Метод для регистрации пользователя + async registerUser(userId: number, username: string, chatId: number, balance: number = 50): Promise { + try { + const response = await fetch(`${API_BASE_URL}/register`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'accept': 'application/json', + }, + body: JSON.stringify({ + user_id: userId, + username: username, + chat_id: chatId, + balance: balance + }) + }); + + if (!response.ok) { + throw new Error('Failed to register user'); + } + + return await response.json(); + } catch (error) { + console.error('Error registering user:', error); + throw error; + } + }, + // Метод для получения информации о пользователе async getUserInfo(userId: number = getCurrentUserId()): Promise { try {