aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/utils
diff options
context:
space:
mode:
authorfragosti <francesco.agosti93@gmail.com>2018-07-12 03:14:23 +0800
committerfragosti <francesco.agosti93@gmail.com>2018-07-12 03:14:23 +0800
commit9131a72a47690912db9b536186d05120daabd115 (patch)
treeedbf0fb3b572a9422410b6fac9f47c103c1c0218 /packages/website/ts/utils
parentd319b53e23047d4ff62415555475ef6da5f3d774 (diff)
downloaddexon-0x-contracts-9131a72a47690912db9b536186d05120daabd115.tar
dexon-0x-contracts-9131a72a47690912db9b536186d05120daabd115.tar.gz
dexon-0x-contracts-9131a72a47690912db9b536186d05120daabd115.tar.bz2
dexon-0x-contracts-9131a72a47690912db9b536186d05120daabd115.tar.lz
dexon-0x-contracts-9131a72a47690912db9b536186d05120daabd115.tar.xz
dexon-0x-contracts-9131a72a47690912db9b536186d05120daabd115.tar.zst
dexon-0x-contracts-9131a72a47690912db9b536186d05120daabd115.zip
Replace calls to google analytics with calls to heap
Diffstat (limited to 'packages/website/ts/utils')
-rw-r--r--packages/website/ts/utils/analytics.ts80
-rw-r--r--packages/website/ts/utils/configs.ts1
-rw-r--r--packages/website/ts/utils/constants.ts1
-rw-r--r--packages/website/ts/utils/utils.ts1
4 files changed, 65 insertions, 18 deletions
diff --git a/packages/website/ts/utils/analytics.ts b/packages/website/ts/utils/analytics.ts
index f4bfa083f..9a1684813 100644
--- a/packages/website/ts/utils/analytics.ts
+++ b/packages/website/ts/utils/analytics.ts
@@ -1,27 +1,71 @@
import * as _ from 'lodash';
-import * as ReactGA from 'react-ga';
-import { InjectedWeb3 } from 'ts/types';
+import { InjectedWeb3, ObjectMap, Order } from 'ts/types';
import { configs } from 'ts/utils/configs';
import { utils } from 'ts/utils/utils';
-export const analytics = {
- init(): void {
- ReactGA.initialize(configs.GOOGLE_ANALYTICS_ID);
- },
- logEvent(category: string, action: string, label: string, value?: any): void {
- ReactGA.event({
- category,
- action,
- label,
- value,
- });
- },
- async logProviderAsync(web3IfExists: InjectedWeb3): Promise<void> {
+export interface HeapAnalytics {
+ indentify(id: string, idType: string): void;
+ track(eventName: string, eventProperties?: ObjectMap<string | number>): void;
+ resetIdentity(): void;
+ addUserProperties(properties: ObjectMap<string | number>): void;
+ addEventProperties(properties: ObjectMap<string | number>): void;
+ removeEventProperty(property: string): void;
+ clearEventProperties(): void;
+}
+
+export class Analytics implements HeapAnalytics {
+ private _heap: HeapAnalytics;
+ public static init(): Analytics {
+ const heap = (window as any).heap;
+ if (!_.isUndefined(heap)) {
+ return new Analytics(heap);
+ } else {
+ throw new Error('Could not find the Heap SDK on the page.');
+ }
+ }
+ constructor(heap: HeapAnalytics) {
+ this._heap = heap;
+ }
+ // HeapAnalytics Wrappers
+ public indentify(id: string, idType: string): void {
+ this._heap.indentify(id, idType);
+ }
+ public track(eventName: string, eventProperties?: ObjectMap<string | number>): void {
+ this._heap.track(eventName, eventProperties);
+ }
+ public resetIdentity(): void {
+ this._heap.resetIdentity();
+ }
+ public addUserProperties(properties: ObjectMap<string | number>): void {
+ this._heap.addUserProperties(properties);
+ }
+ public addEventProperties(properties: ObjectMap<string | number>): void {
+ this._heap.addEventProperties(properties);
+ }
+ public removeEventProperty(property: string): void {
+ this._heap.removeEventProperty(property);
+ }
+ public clearEventProperties(): void {
+ this._heap.clearEventProperties();
+ }
+ // Custom methods
+ public trackOrderEvent(eventName: string, order: Order): void {
+ const orderLoggingData = {
+ takerTokenAmount: order.signedOrder.takerTokenAmount,
+ makeTokenAmount: order.signedOrder.makerTokenAmount,
+ takerToken: order.metadata.takerToken.symbol,
+ makerToken: order.metadata.makerToken.symbol,
+ };
+ this.track(eventName, orderLoggingData);
+ }
+ public async logProviderAsync(web3IfExists: InjectedWeb3): Promise<void> {
await utils.onPageLoadAsync();
const providerType =
!_.isUndefined(web3IfExists) && !_.isUndefined(web3IfExists.currentProvider)
? utils.getProviderType(web3IfExists.currentProvider)
: 'NONE';
- ReactGA.ga('set', 'dimension1', providerType);
- },
-};
+ }
+}
+
+// Assume heap library has loaded.
+export const analytics = Analytics.init();
diff --git a/packages/website/ts/utils/configs.ts b/packages/website/ts/utils/configs.ts
index 97aabd13d..a2fd6a47e 100644
--- a/packages/website/ts/utils/configs.ts
+++ b/packages/website/ts/utils/configs.ts
@@ -23,6 +23,7 @@ export const configs = {
DOMAIN_PRODUCTION: '0xproject.com',
ENVIRONMENT: isDevelopment ? Environments.DEVELOPMENT : Environments.PRODUCTION,
GOOGLE_ANALYTICS_ID: 'UA-98720122-1',
+ HEAP_APP_ID: '410099666',
LAST_LOCAL_STORAGE_FILL_CLEARANCE_DATE: '2017-11-22',
LAST_LOCAL_STORAGE_TRACKED_TOKEN_CLEARANCE_DATE: '2018-7-5',
OUTDATED_WRAPPED_ETHERS: [
diff --git a/packages/website/ts/utils/constants.ts b/packages/website/ts/utils/constants.ts
index e43f541bf..d52b9b392 100644
--- a/packages/website/ts/utils/constants.ts
+++ b/packages/website/ts/utils/constants.ts
@@ -34,6 +34,7 @@ export const constants = {
PROVIDER_NAME_GENERIC: 'Injected Web3',
PROVIDER_NAME_PUBLIC: '0x Public',
ROLLBAR_ACCESS_TOKEN: '32c39bfa4bb6440faedc1612a9c13d28',
+ HEAP_APP_ID: '410099666',
S3_DOC_BUCKET_ROOT: 'https://s3.amazonaws.com/doc-jsons',
S3_STAGING_DOC_BUCKET_ROOT: 'https://s3.amazonaws.com/staging-doc-jsons',
SUCCESS_STATUS: 200,
diff --git a/packages/website/ts/utils/utils.ts b/packages/website/ts/utils/utils.ts
index 8c76a7592..df7f8d10f 100644
--- a/packages/website/ts/utils/utils.ts
+++ b/packages/website/ts/utils/utils.ts
@@ -313,6 +313,7 @@ export const utils = {
const baseUrl = `https://${window.location.hostname}${hasPort ? `:${port}` : ''}`;
return baseUrl;
},
+ // TODO: Fix this, it's a lie.
async onPageLoadAsync(): Promise<void> {
if (document.readyState === 'complete') {
return; // Already loaded