@mntm/stats
Version:
A package for integrating analytics tools
49 lines (48 loc) • 1.61 kB
JavaScript
import { launchParams } from '../launch.js';
import { safeWindow } from '../dom.js';
// Type inlined for easy integration
/**
* Implements VK Statistics
*
* @param api Implementation of VK API
* @see Implementation with VKWebAppCallAPIMethod and valid token
*/
export const createProviderVK = (api) => {
const zone = `gtm${Math.round(-1 * new Date().getTimezoneOffset() / 60)}`;
const app = Number(launchParams.vk_app_id) || 0;
const user = Number(launchParams.vk_user_id) || 0;
const platform = launchParams.vk_platform || 'unknown';
const base = {
type: 'type_navgo',
type_navgo: {
type: 'type_mini_app_custom_event_item'
},
timezone: zone,
mini_app_id: app,
user_id: user,
vk_platform: platform
};
const provider = {
send(event, params) {
/* eslint-disable no-param-reassign */
if (params.category) {
event = `${params.category}--${event}`;
}
event += '_front';
return api('statEvents.addMiniApps', {
events: [Object.assign({}, base, {
event,
url: safeWindow.location.href,
timestamp: Math.round(Date.now() / 1000),
screen: params.screen || 'unknown',
json: JSON.stringify(params.params || {})
})]
}).then(() => {
return true;
}).catch(() => {
return false;
});
}
};
return provider;
};