diff options
author | Steve Klebanoff <steve.klebanoff@gmail.com> | 2018-11-16 02:43:42 +0800 |
---|---|---|
committer | Steve Klebanoff <steve.klebanoff@gmail.com> | 2018-11-16 02:43:42 +0800 |
commit | 61f227e123218ba76a7fdf7fc2ee89171c2bf16c (patch) | |
tree | d821f01c41dd58e03b093a40930748dac51c2148 /packages/instant/src/util/analytics.ts | |
parent | 20ed4fbbd46f359ca1436b2d3b9d17527c01df54 (diff) | |
download | dexon-sol-tools-61f227e123218ba76a7fdf7fc2ee89171c2bf16c.tar dexon-sol-tools-61f227e123218ba76a7fdf7fc2ee89171c2bf16c.tar.gz dexon-sol-tools-61f227e123218ba76a7fdf7fc2ee89171c2bf16c.tar.bz2 dexon-sol-tools-61f227e123218ba76a7fdf7fc2ee89171c2bf16c.tar.lz dexon-sol-tools-61f227e123218ba76a7fdf7fc2ee89171c2bf16c.tar.xz dexon-sol-tools-61f227e123218ba76a7fdf7fc2ee89171c2bf16c.tar.zst dexon-sol-tools-61f227e123218ba76a7fdf7fc2ee89171c2bf16c.zip |
feat(instant): Heap middleware and first tracking events
Diffstat (limited to 'packages/instant/src/util/analytics.ts')
-rw-r--r-- | packages/instant/src/util/analytics.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/instant/src/util/analytics.ts b/packages/instant/src/util/analytics.ts new file mode 100644 index 000000000..4de3e5eff --- /dev/null +++ b/packages/instant/src/util/analytics.ts @@ -0,0 +1,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(); |