diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-11-08 10:02:24 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-11-08 15:41:25 +0800 |
commit | d0c009adff53d94414cf51028eff490e0452a3c9 (patch) | |
tree | 82a76e2499883d9a8a579b64b6503ef108d7706c /packages/instant/src/redux/async_data.ts | |
parent | f6abc007ffb249e4bbf85b8a7a77309d43e0a147 (diff) | |
download | dexon-sol-tools-d0c009adff53d94414cf51028eff490e0452a3c9.tar dexon-sol-tools-d0c009adff53d94414cf51028eff490e0452a3c9.tar.gz dexon-sol-tools-d0c009adff53d94414cf51028eff490e0452a3c9.tar.bz2 dexon-sol-tools-d0c009adff53d94414cf51028eff490e0452a3c9.tar.lz dexon-sol-tools-d0c009adff53d94414cf51028eff490e0452a3c9.tar.xz dexon-sol-tools-d0c009adff53d94414cf51028eff490e0452a3c9.tar.zst dexon-sol-tools-d0c009adff53d94414cf51028eff490e0452a3c9.zip |
feat(instant): fetch account address at startup and drive account state changes
Diffstat (limited to 'packages/instant/src/redux/async_data.ts')
-rw-r--r-- | packages/instant/src/redux/async_data.ts | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/instant/src/redux/async_data.ts b/packages/instant/src/redux/async_data.ts index c3d190af2..e27ec1dc3 100644 --- a/packages/instant/src/redux/async_data.ts +++ b/packages/instant/src/redux/async_data.ts @@ -1,6 +1,7 @@ import * as _ from 'lodash'; import { BIG_NUMBER_ZERO } from '../constants'; +import { AccountState } from '../types'; import { assetUtils } from '../util/asset'; import { coinbaseApi } from '../util/coinbase_api'; import { errorFlasher } from '../util/error_flasher'; @@ -33,4 +34,24 @@ export const asyncData = { store.dispatch(actions.setAvailableAssets([])); } }, + fetchAccountInfoAndDispatchToStore: async (store: Store) => { + const { providerState } = store.getState(); + const web3Wrapper = providerState.web3Wrapper; + if (providerState.account.state !== AccountState.Loading) { + store.dispatch(actions.setAccountStateLoading()); + } + let availableAddresses: string[]; + try { + availableAddresses = await web3Wrapper.getAvailableAddressesAsync(); + } catch (e) { + store.dispatch(actions.setAccountStateError()); + return; + } + if (!_.isEmpty(availableAddresses)) { + const activeAddress = availableAddresses[0]; + store.dispatch(actions.setAccountStateReady(activeAddress)); + } else { + store.dispatch(actions.setAccountStateLocked()); + } + }, }; |