blob: 4de3e5effc56cfbbdf63f33de4241e7db642dbb0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import { ObjectMap } from '@0x/types';
import { logUtils } from '@0x/utils';
import { HeapAnalytics, heapUtil } from './heap';
export class Analytics {
public static init(): Analytics {
return new Analytics();
}
public track(eventName: string, eventProperties?: ObjectMap<string | number>): void {
console.log('HEAP: tracking', eventName, eventProperties);
this._evaluteHeapCall(heap => heap.track(eventName, eventProperties));
}
public addUserProperties(properties: ObjectMap<string | number>): void {
console.log('HEAP: adding user properties', properties);
this._evaluteHeapCall(heap => heap.addUserProperties(properties));
}
public addEventProperties(properties: ObjectMap<string | number>): void {
this._evaluteHeapCall(heap => heap.addEventProperties(properties));
}
private _evaluteHeapCall(heapFunctionCall: (heap: HeapAnalytics) => void): void {
const curHeap = heapUtil.getHeap();
if (curHeap) {
try {
heapFunctionCall(curHeap);
} catch (e) {
// We never want analytics to crash our React component
// TODO: error reporter here
logUtils.log('Analytics error', e);
}
}
}
}
export const analytics = Analytics.init();
|