обавлена отправка целевых событий в систему аналитики
This commit is contained in:
parent
861670e481
commit
fa8a012ad3
@ -12,6 +12,7 @@ import { paymentService } from '../services/paymentService';
|
|||||||
import { tokenPacks } from '../constants/tokenPacks';
|
import { tokenPacks } from '../constants/tokenPacks';
|
||||||
import { getCurrentUserId } from '../constants/user';
|
import { getCurrentUserId } from '../constants/user';
|
||||||
import { useBalance } from '../contexts/BalanceContext';
|
import { useBalance } from '../contexts/BalanceContext';
|
||||||
|
import { sendTargetEvent } from '../services/analyticsService';
|
||||||
|
|
||||||
// Интерфейс для хранения данных о последней генерации
|
// Интерфейс для хранения данных о последней генерации
|
||||||
interface LastGenerationData {
|
interface LastGenerationData {
|
||||||
@ -193,6 +194,9 @@ const Home: React.FC = () => {
|
|||||||
customPrompt: userPrompt
|
customPrompt: userPrompt
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Отправляем целевое событие об успешной генерации
|
||||||
|
sendTargetEvent(10457, getCurrentUserId());
|
||||||
|
|
||||||
// Функция для выполнения серии запросов на обновление баланса
|
// Функция для выполнения серии запросов на обновление баланса
|
||||||
const updateBalanceWithRetries = () => {
|
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 { TokenPack } from '../constants/tokenPacks';
|
||||||
import apiService from '../services/api';
|
import apiService from '../services/api';
|
||||||
import { getCurrentUserId } from '../constants/user';
|
import { getCurrentUserId } from '../constants/user';
|
||||||
|
import { sendTargetEvent } from './analyticsService';
|
||||||
|
|
||||||
export const paymentService = {
|
export const paymentService = {
|
||||||
showBuyTokensPopup: async (pack: TokenPack, onSuccess?: (userData?: any) => void) => {
|
showBuyTokensPopup: async (pack: TokenPack, onSuccess?: (userData?: any) => void) => {
|
||||||
@ -24,6 +25,9 @@ export const paymentService = {
|
|||||||
// Открываем встроенный платеж Telegram без предварительного подтверждения
|
// Открываем встроенный платеж Telegram без предварительного подтверждения
|
||||||
webApp.openInvoice(invoiceLink, async (status: 'paid' | 'cancelled' | 'failed' | 'pending') => {
|
webApp.openInvoice(invoiceLink, async (status: 'paid' | 'cancelled' | 'failed' | 'pending') => {
|
||||||
if (status === 'paid') {
|
if (status === 'paid') {
|
||||||
|
// Отправляем целевое событие о покупке токенов
|
||||||
|
// Значение value = 0.01 * pack.price (конвертация звезд в USD)
|
||||||
|
sendTargetEvent(10458, userId, 0.01 * pack.price, 'usd');
|
||||||
// Функция для выполнения одной попытки получения данных пользователя
|
// Функция для выполнения одной попытки получения данных пользователя
|
||||||
const fetchUserData = async (attempt: number) => {
|
const fetchUserData = async (attempt: number) => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user