обавлена автоматическая регистрация пользователя при первом запуске с начальным балансом 50 токенов

This commit is contained in:
kazachilo 2025-03-28 17:08:41 +03:00
parent 0808f38151
commit 6acc9fb65c
3 changed files with 62 additions and 2 deletions

View File

@ -39,7 +39,9 @@ const AppContent: React.FC = () => {
useEffect(() => {
// Инициализируем ID пользователя при запуске приложения
initializeUserId();
initializeUserId().catch(error => {
console.error('Ошибка при инициализации пользователя:', error);
});
// Стабилизируем окно и отключаем вертикальные свайпы
if (window.Telegram?.WebApp) {

View File

@ -17,13 +17,43 @@ export const isTelegramWebAppAvailable = (): boolean => {
);
};
// Импортируем apiService для регистрации пользователя
import apiService from '../services/api';
/**
* Инициализация ID пользователя при старте приложения
*/
export const initializeUserId = (): void => {
export const initializeUserId = async (): Promise<void> => {
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);
}

View File

@ -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<any> {
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<any> {
try {