aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/selectors.js
diff options
context:
space:
mode:
authorDan J Miller <danjm.com@gmail.com>2018-12-01 06:51:24 +0800
committerDan Finlay <542863+danfinlay@users.noreply.github.com>2018-12-01 06:51:24 +0800
commit4c2455554540b9d0dd979bad329892279fddd8b9 (patch)
treee3b101ec86a65500023d8b7e99dd5973a9473626 /ui/app/selectors.js
parent45a9f40aa614753e274275eaeb4dd6c0251dcf45 (diff)
downloadtangerine-wallet-browser-4c2455554540b9d0dd979bad329892279fddd8b9.tar
tangerine-wallet-browser-4c2455554540b9d0dd979bad329892279fddd8b9.tar.gz
tangerine-wallet-browser-4c2455554540b9d0dd979bad329892279fddd8b9.tar.bz2
tangerine-wallet-browser-4c2455554540b9d0dd979bad329892279fddd8b9.tar.lz
tangerine-wallet-browser-4c2455554540b9d0dd979bad329892279fddd8b9.tar.xz
tangerine-wallet-browser-4c2455554540b9d0dd979bad329892279fddd8b9.tar.zst
tangerine-wallet-browser-4c2455554540b9d0dd979bad329892279fddd8b9.zip
Save recent network balances in local storage (#5843)
* Use selector for state.metamask.accounts in all cases. * Default to cached balance when selecting metamask accounts * Adds the cached-balances controller * Documentation and small codes fixes for #5843 Co-Authored-By: danjm <danjm.com@gmail.com>
Diffstat (limited to 'ui/app/selectors.js')
-rw-r--r--ui/app/selectors.js34
1 files changed, 25 insertions, 9 deletions
diff --git a/ui/app/selectors.js b/ui/app/selectors.js
index b518527c9..f99f14aa8 100644
--- a/ui/app/selectors.js
+++ b/ui/app/selectors.js
@@ -1,9 +1,7 @@
const abi = require('human-standard-token-abi')
-
import {
transactionsSelector,
} from './selectors/transactions'
-
const {
multiplyCurrencies,
} = require('./conversion-util')
@@ -36,12 +34,13 @@ const selectors = {
getCurrentViewContext,
getTotalUnapprovedCount,
preferencesSelector,
+ getMetaMaskAccounts,
}
module.exports = selectors
function getSelectedAddress (state) {
- const selectedAddress = state.metamask.selectedAddress || Object.keys(state.metamask.accounts)[0]
+ const selectedAddress = state.metamask.selectedAddress || Object.keys(getMetaMaskAccounts(state))[0]
return selectedAddress
}
@@ -53,8 +52,27 @@ function getSelectedIdentity (state) {
return identities[selectedAddress]
}
+function getMetaMaskAccounts (state) {
+ const currentAccounts = state.metamask.accounts
+ const cachedBalances = state.metamask.cachedBalances
+ const selectedAccounts = {}
+
+ Object.keys(currentAccounts).forEach(accountID => {
+ const account = currentAccounts[accountID]
+ if (account && account.balance === null || account.balance === undefined) {
+ selectedAccounts[accountID] = {
+ ...account,
+ balance: cachedBalances[accountID],
+ }
+ } else {
+ selectedAccounts[accountID] = account
+ }
+ })
+ return selectedAccounts
+}
+
function getSelectedAccount (state) {
- const accounts = state.metamask.accounts
+ const accounts = getMetaMaskAccounts(state)
const selectedAddress = getSelectedAddress(state)
return accounts[selectedAddress]
@@ -102,10 +120,8 @@ function getAddressBook (state) {
}
function accountsWithSendEtherInfoSelector (state) {
- const {
- accounts,
- identities,
- } = state.metamask
+ const accounts = getMetaMaskAccounts(state)
+ const { identities } = state.metamask
const accountsWithSendEtherInfo = Object.entries(accounts).map(([key, account]) => {
return Object.assign({}, account, identities[key])
@@ -175,7 +191,7 @@ function autoAddToBetaUI (state) {
const autoAddTokensThreshold = 1
const numberOfTransactions = state.metamask.selectedAddressTxList.length
- const numberOfAccounts = Object.keys(state.metamask.accounts).length
+ const numberOfAccounts = Object.keys(getMetaMaskAccounts(state)).length
const numberOfTokensAdded = state.metamask.tokens.length
const userPassesThreshold = (numberOfTransactions > autoAddTransactionThreshold) &&