diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-11-21 14:34:57 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-11-21 14:38:49 +0800 |
commit | 351e0e6f5f2add25c4d779356a8cfd4aefb305cb (patch) | |
tree | f9feebf1fce79c1b76f10c2040551ed4a6052154 /packages/instant/src/redux | |
parent | 15f05733be45e05974972c80c4fa8437a62633e2 (diff) | |
download | dexon-sol-tools-351e0e6f5f2add25c4d779356a8cfd4aefb305cb.tar dexon-sol-tools-351e0e6f5f2add25c4d779356a8cfd4aefb305cb.tar.gz dexon-sol-tools-351e0e6f5f2add25c4d779356a8cfd4aefb305cb.tar.bz2 dexon-sol-tools-351e0e6f5f2add25c4d779356a8cfd4aefb305cb.tar.lz dexon-sol-tools-351e0e6f5f2add25c4d779356a8cfd4aefb305cb.tar.xz dexon-sol-tools-351e0e6f5f2add25c4d779356a8cfd4aefb305cb.tar.zst dexon-sol-tools-351e0e6f5f2add25c4d779356a8cfd4aefb305cb.zip |
feat(instant): implement account related events
Diffstat (limited to 'packages/instant/src/redux')
-rw-r--r-- | packages/instant/src/redux/analytics_middleware.ts | 34 | ||||
-rw-r--r-- | packages/instant/src/redux/async_data.ts | 2 |
2 files changed, 20 insertions, 16 deletions
diff --git a/packages/instant/src/redux/analytics_middleware.ts b/packages/instant/src/redux/analytics_middleware.ts index f971dbd33..893844f5d 100644 --- a/packages/instant/src/redux/analytics_middleware.ts +++ b/packages/instant/src/redux/analytics_middleware.ts @@ -10,20 +10,6 @@ import { Action, ActionTypes } from './actions'; import { State } from './reducer'; -const shouldTriggerWalletReady = (prevAccount: Account, curAccount: Account): boolean => { - const didJustTurnReady = curAccount.state === AccountState.Ready && prevAccount.state !== AccountState.Ready; - if (didJustTurnReady) { - return true; - } - - if (curAccount.state === AccountState.Ready && prevAccount.state === AccountState.Ready) { - // Account was ready, and is now ready again, but address has changed - return curAccount.address !== prevAccount.address; - } - - return false; -}; - export const analyticsMiddleware: Middleware = store => next => middlewareAction => { const prevState = store.getState() as State; const prevAccount = prevState.providerState.account; @@ -35,10 +21,26 @@ export const analyticsMiddleware: Middleware = store => next => middlewareAction switch (nextAction.type) { case ActionTypes.SET_ACCOUNT_STATE_READY: - if (curAccount.state === AccountState.Ready && shouldTriggerWalletReady(prevAccount, curAccount)) { + if (prevAccount.state !== AccountState.Ready && curAccount.state === AccountState.Ready) { + // if we are moving from account not ready to account ready, update the current address and track `Account - Ready` const ethAddress = curAccount.address; analytics.addUserProperties({ ethAddress }); - analytics.trackWalletReady(); + analytics.trackAccountReady(ethAddress); + } else if (prevAccount.state === AccountState.Ready && curAccount.state === AccountState.Ready) { + if (prevAccount.address !== curAccount.address) { + // if our account state was already ready and our address has changed, update the current address and track `Account - Address Changed` + const ethAddress = curAccount.address; + analytics.addUserProperties({ ethAddress }); + analytics.trackAccountAddressChanged(ethAddress); + } + } + break; + case ActionTypes.SET_ACCOUNT_STATE_LOCKED: + if (prevAccount.state !== AccountState.Locked && curAccount.state === AccountState.Locked) { + // if we are moving from account not locked to account locked, update the current address to undefined and track `Account - Locked` + const ethAddress = undefined; + analytics.addUserProperties({ ethAddress }); + analytics.trackAccountLocked(); } break; case ActionTypes.UPDATE_ACCOUNT_ETH_BALANCE: diff --git a/packages/instant/src/redux/async_data.ts b/packages/instant/src/redux/async_data.ts index 5d30388b8..6feb760e7 100644 --- a/packages/instant/src/redux/async_data.ts +++ b/packages/instant/src/redux/async_data.ts @@ -5,6 +5,7 @@ import { Dispatch } from 'redux'; import { BIG_NUMBER_ZERO } from '../constants'; import { AccountState, ERC20Asset, OrderProcessState, ProviderState } from '../types'; +import { analytics } from '../util/analytics'; import { assetUtils } from '../util/asset'; import { buyQuoteUpdater } from '../util/buy_quote_updater'; import { coinbaseApi } from '../util/coinbase_api'; @@ -58,6 +59,7 @@ export const asyncData = { ? await (provider as any).enable() : await web3Wrapper.getAvailableAddressesAsync(); } catch (e) { + analytics.trackAccountUnlockDenied(); dispatch(actions.setAccountStateLocked()); return; } |