diff options
author | Brandon Millman <brandon@0xproject.com> | 2018-11-22 06:20:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-22 06:20:01 +0800 |
commit | 5c81f07d467262106f108b37fbf0bad4f5a0589b (patch) | |
tree | 7ec53d0f23e44215c5f2fc9bad534fb6d122ee33 /packages/instant/src/redux | |
parent | f46a49fd13c88dd86c9661d76bace18844642c04 (diff) | |
parent | 804de89796de047fe43dbb736b5e8b82bb30ee3a (diff) | |
download | dexon-sol-tools-5c81f07d467262106f108b37fbf0bad4f5a0589b.tar dexon-sol-tools-5c81f07d467262106f108b37fbf0bad4f5a0589b.tar.gz dexon-sol-tools-5c81f07d467262106f108b37fbf0bad4f5a0589b.tar.bz2 dexon-sol-tools-5c81f07d467262106f108b37fbf0bad4f5a0589b.tar.lz dexon-sol-tools-5c81f07d467262106f108b37fbf0bad4f5a0589b.tar.xz dexon-sol-tools-5c81f07d467262106f108b37fbf0bad4f5a0589b.tar.zst dexon-sol-tools-5c81f07d467262106f108b37fbf0bad4f5a0589b.zip |
Merge pull request #1300 from 0xProject/feature/instant/events-account
[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, 19 insertions, 17 deletions
diff --git a/packages/instant/src/redux/analytics_middleware.ts b/packages/instant/src/redux/analytics_middleware.ts index f971dbd33..299c2560e 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,24 @@ 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 (curAccount.state === AccountState.Ready) { + const didJustTurnReady = prevAccount.state !== AccountState.Ready; + const didJustUpdateAddress = + prevAccount.state === AccountState.Ready && prevAccount.address !== curAccount.address; const ethAddress = curAccount.address; - analytics.addUserProperties({ ethAddress }); - analytics.trackWalletReady(); + if (didJustTurnReady) { + analytics.trackAccountReady(ethAddress); + analytics.addUserProperties({ lastKnownEthAddress: ethAddress }); + } else if (didJustUpdateAddress) { + analytics.trackAccountAddressChanged(ethAddress); + analytics.addUserProperties({ lastKnownEthAddress: 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, track `Account - Locked` + 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; } |