aboutsummaryrefslogtreecommitdiffstats
path: root/packages/instant/src/util/analytics.ts
diff options
context:
space:
mode:
authorSteve Klebanoff <steve.klebanoff@gmail.com>2018-11-16 02:43:42 +0800
committerSteve Klebanoff <steve.klebanoff@gmail.com>2018-11-16 02:43:42 +0800
commit61f227e123218ba76a7fdf7fc2ee89171c2bf16c (patch)
treed821f01c41dd58e03b093a40930748dac51c2148 /packages/instant/src/util/analytics.ts
parent20ed4fbbd46f359ca1436b2d3b9d17527c01df54 (diff)
downloaddexon-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.ts35
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();