UNPKG

animiassumenda

Version:

Blox live, desktop app for managing staking accounts

55 lines (52 loc) 1.75 kB
import { Log } from '../common/logger/logger'; import BloxApi from '../common/communication-manager/blox-api'; import { METHOD } from '../common/communication-manager/constants'; export default function bloxAnalyticsPlugin(pluginConfig = {}) { // return object for analytics to use const bloxApi = new BloxApi('', true); const logger = new Log('analytics'); return { /* All plugins require a name */ name: 'blox-analytics-plugin', /* Everything else below this is optional depending on your plugin requirements */ config: { ...pluginConfig }, initialize: async ({ config }) => { logger.trace('init', config); bloxApi.init(); // load provider script to page }, page: async ({ payload }) => { // call provider specific page tracking try { logger.trace('page', payload); await bloxApi.request(METHOD.PUT, 'analytics/page', payload); } catch (e) { logger.error('analytics request failed', e); } }, track: async ({ payload }) => { try { logger.trace('track', payload); await bloxApi.request(METHOD.PUT, 'analytics/track', payload); } catch (e) { logger.error('analytics request failed', e); } // call provider specific event tracking }, identify: async ({ payload }) => { try { logger.trace('identify', payload); await bloxApi.request(METHOD.PUT, 'analytics/identify', payload); } catch (e) { logger.error('analytics request failed', e); } // call provider specific user identify method }, loaded: () => { // return boolean so analytics knows when it can send data to third party return true; } }; }