обавлена отправка целевых событий в систему аналитики
This commit is contained in:
parent
861670e481
commit
fa8a012ad3
@ -12,6 +12,7 @@ import { paymentService } from '../services/paymentService';
|
||||
import { tokenPacks } from '../constants/tokenPacks';
|
||||
import { getCurrentUserId } from '../constants/user';
|
||||
import { useBalance } from '../contexts/BalanceContext';
|
||||
import { sendTargetEvent } from '../services/analyticsService';
|
||||
|
||||
// Интерфейс для хранения данных о последней генерации
|
||||
interface LastGenerationData {
|
||||
@ -193,6 +194,9 @@ const Home: React.FC = () => {
|
||||
customPrompt: userPrompt
|
||||
});
|
||||
|
||||
// Отправляем целевое событие об успешной генерации
|
||||
sendTargetEvent(10457, getCurrentUserId());
|
||||
|
||||
// Функция для выполнения серии запросов на обновление баланса
|
||||
const updateBalanceWithRetries = () => {
|
||||
// Функция для выполнения одной попытки обновления баланса
|
||||
|
||||
@ -101,3 +101,60 @@ export const trackRejectedPrompt = (originalPrompt: string): void => {
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Отправляет целевое событие в систему аналитики
|
||||
* @param targetId - ID цели
|
||||
* @param userId - Telegram ID пользователя
|
||||
* @param value - Общая цена (опционально)
|
||||
* @param unit - Код валюты (опционально, обязательно если указан value)
|
||||
*/
|
||||
export const sendTargetEvent = async (
|
||||
targetId: number,
|
||||
userId: number,
|
||||
value?: number,
|
||||
unit?: string
|
||||
): Promise<void> => {
|
||||
try {
|
||||
const date = new Date().toISOString(); // Текущая дата в формате ISO 8601
|
||||
|
||||
const payload: {
|
||||
target_id: number;
|
||||
user_id: number;
|
||||
date: string;
|
||||
value?: number;
|
||||
unit?: string;
|
||||
} = {
|
||||
target_id: targetId,
|
||||
user_id: userId,
|
||||
date: date
|
||||
};
|
||||
|
||||
// Добавляем value и unit, если они указаны
|
||||
if (value !== undefined) {
|
||||
payload.value = value;
|
||||
|
||||
if (unit) {
|
||||
payload.unit = unit;
|
||||
}
|
||||
}
|
||||
|
||||
// Отправляем запрос на сервер
|
||||
const response = await fetch('https://api.graspil.com/v1/send-target', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Api-Key': '3bb78a396b0aa436843d606d02abfe4c'
|
||||
},
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (!data.ok) {
|
||||
console.error('Ошибка при отправке целевого события:', data.error);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Ошибка при отправке целевого события:', error);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { TokenPack } from '../constants/tokenPacks';
|
||||
import apiService from '../services/api';
|
||||
import { getCurrentUserId } from '../constants/user';
|
||||
import { sendTargetEvent } from './analyticsService';
|
||||
|
||||
export const paymentService = {
|
||||
showBuyTokensPopup: async (pack: TokenPack, onSuccess?: (userData?: any) => void) => {
|
||||
@ -24,6 +25,9 @@ export const paymentService = {
|
||||
// Открываем встроенный платеж Telegram без предварительного подтверждения
|
||||
webApp.openInvoice(invoiceLink, async (status: 'paid' | 'cancelled' | 'failed' | 'pending') => {
|
||||
if (status === 'paid') {
|
||||
// Отправляем целевое событие о покупке токенов
|
||||
// Значение value = 0.01 * pack.price (конвертация звезд в USD)
|
||||
sendTargetEvent(10458, userId, 0.01 * pack.price, 'usd');
|
||||
// Функция для выполнения одной попытки получения данных пользователя
|
||||
const fetchUserData = async (attempt: number) => {
|
||||
try {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user