aboutsummaryrefslogtreecommitdiffstats
path: root/packages/website/ts/redux
diff options
context:
space:
mode:
authorfragosti <francesco.agosti93@gmail.com>2018-07-14 02:15:50 +0800
committerfragosti <francesco.agosti93@gmail.com>2018-07-14 02:15:50 +0800
commitb70f5d1a1efcb3b07673aa3b4bc7bc2318f55462 (patch)
treed011565b1c95d4682381f8f573afadf98911e396 /packages/website/ts/redux
parentc5fcdd06579b67b5b129749474acd9a4d1d4db65 (diff)
parent26363931ed8ba35a55073d00c4fe128c7e616acc (diff)
downloaddexon-sol-tools-b70f5d1a1efcb3b07673aa3b4bc7bc2318f55462.tar
dexon-sol-tools-b70f5d1a1efcb3b07673aa3b4bc7bc2318f55462.tar.gz
dexon-sol-tools-b70f5d1a1efcb3b07673aa3b4bc7bc2318f55462.tar.bz2
dexon-sol-tools-b70f5d1a1efcb3b07673aa3b4bc7bc2318f55462.tar.lz
dexon-sol-tools-b70f5d1a1efcb3b07673aa3b4bc7bc2318f55462.tar.xz
dexon-sol-tools-b70f5d1a1efcb3b07673aa3b4bc7bc2318f55462.tar.zst
dexon-sol-tools-b70f5d1a1efcb3b07673aa3b4bc7bc2318f55462.zip
Merge branch 'v2-prototype' of https://github.com/0xProject/0x-monorepo into bug/website/txhash-error
Diffstat (limited to 'packages/website/ts/redux')
-rw-r--r--packages/website/ts/redux/analyticsMiddleware.ts41
-rw-r--r--packages/website/ts/redux/store.ts7
2 files changed, 45 insertions, 3 deletions
diff --git a/packages/website/ts/redux/analyticsMiddleware.ts b/packages/website/ts/redux/analyticsMiddleware.ts
new file mode 100644
index 000000000..1ef9b6ad7
--- /dev/null
+++ b/packages/website/ts/redux/analyticsMiddleware.ts
@@ -0,0 +1,41 @@
+import { Middleware } from 'redux';
+import { State } from 'ts/redux/reducer';
+import { ActionTypes } from 'ts/types';
+import { analytics } from 'ts/utils/analytics';
+
+export const analyticsMiddleware: Middleware = store => next => action => {
+ const nextAction = next(action);
+ const nextState = (store.getState() as any) as State;
+ switch (action.type) {
+ case ActionTypes.UpdateInjectedProviderName:
+ analytics.addEventProperties({
+ injectedProviderName: nextState.injectedProviderName,
+ });
+ break;
+ case ActionTypes.UpdateNetworkId:
+ analytics.addEventProperties({
+ networkId: nextState.networkId,
+ });
+ break;
+ case ActionTypes.UpdateUserAddress:
+ analytics.addUserProperties({
+ ethAddress: nextState.userAddress,
+ });
+ break;
+ case ActionTypes.UpdateUserEtherBalance:
+ if (nextState.userEtherBalanceInWei) {
+ analytics.addUserProperties({
+ ethBalance: nextState.userEtherBalanceInWei.toString(),
+ });
+ }
+ break;
+ case ActionTypes.UpdatePortalOnboardingStep:
+ analytics.track('Update Onboarding Step', {
+ stepIndex: nextState.portalOnboardingStep,
+ });
+ break;
+ default:
+ break;
+ }
+ return nextAction;
+};
diff --git a/packages/website/ts/redux/store.ts b/packages/website/ts/redux/store.ts
index 2672e3f61..006241371 100644
--- a/packages/website/ts/redux/store.ts
+++ b/packages/website/ts/redux/store.ts
@@ -1,7 +1,8 @@
import * as _ from 'lodash';
-import { createStore, Store as ReduxStore } from 'redux';
-import { devToolsEnhancer } from 'redux-devtools-extension/developmentOnly';
+import { applyMiddleware, createStore, Store as ReduxStore } from 'redux';
+import { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';
import { stateStorage } from 'ts/local_storage/state_storage';
+import { analyticsMiddleware } from 'ts/redux/analyticsMiddleware';
import { reducer, State } from 'ts/redux/reducer';
const ONE_SECOND = 1000;
@@ -9,7 +10,7 @@ const ONE_SECOND = 1000;
export const store: ReduxStore<State> = createStore(
reducer,
stateStorage.getPersistedDefaultState(),
- devToolsEnhancer({ name: '0x Website Redux Store' }),
+ composeWithDevTools(applyMiddleware(analyticsMiddleware)),
);
store.subscribe(
_.throttle(() => {