aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/controllers
diff options
context:
space:
mode:
authorThomas Huang <tmashuang@users.noreply.github.com>2017-10-21 00:09:44 +0800
committerGitHub <noreply@github.com>2017-10-21 00:09:44 +0800
commite3a7da961dd01bcb936a000cdf62e2290a5024ef (patch)
tree516bd55226d160ec888627906884933894c016a4 /app/scripts/controllers
parent87ad6a29f09763c1fa6910b36c946dc00dcf4b6c (diff)
parentc24e266118b7db093a1db0b8c87c361011a16952 (diff)
downloadtangerine-wallet-browser-e3a7da961dd01bcb936a000cdf62e2290a5024ef.tar.gz
tangerine-wallet-browser-e3a7da961dd01bcb936a000cdf62e2290a5024ef.tar.zst
tangerine-wallet-browser-e3a7da961dd01bcb936a000cdf62e2290a5024ef.zip
Merge pull request #2389 from MetaMask/i2348-SelectAccountOnNewVault
Select first account on create or restore vault
Diffstat (limited to 'app/scripts/controllers')
-rw-r--r--app/scripts/controllers/balance.js10
-rw-r--r--app/scripts/controllers/computed-balances.js23
2 files changed, 27 insertions, 6 deletions
diff --git a/app/scripts/controllers/balance.js b/app/scripts/controllers/balance.js
index 4fa4c78fe..f83f294cc 100644
--- a/app/scripts/controllers/balance.js
+++ b/app/scripts/controllers/balance.js
@@ -5,7 +5,9 @@ const BN = require('ethereumjs-util').BN
class BalanceController {
constructor (opts = {}) {
+ this._validateParams(opts)
const { address, accountTracker, txController, blockTracker } = opts
+
this.address = address
this.accountTracker = accountTracker
this.txController = txController
@@ -65,6 +67,14 @@ class BalanceController {
return pending
}
+ _validateParams (opts) {
+ const { address, accountTracker, txController, blockTracker } = opts
+ if (!address || !accountTracker || !txController || !blockTracker) {
+ const error = 'Cannot construct a balance checker without address, accountTracker, txController, and blockTracker.'
+ throw new Error(error)
+ }
+ }
+
}
module.exports = BalanceController
diff --git a/app/scripts/controllers/computed-balances.js b/app/scripts/controllers/computed-balances.js
index 2479e1b3a..9855f715e 100644
--- a/app/scripts/controllers/computed-balances.js
+++ b/app/scripts/controllers/computed-balances.js
@@ -20,23 +20,34 @@ class ComputedbalancesController {
}
updateAllBalances () {
- for (let address in this.accountTracker.store.getState().accounts) {
+ Object.keys(this.balances).forEach((balance) => {
+ const address = balance.address
this.balances[address].updateBalance()
- }
+ })
}
_initBalanceUpdating () {
const store = this.accountTracker.store.getState()
- this.addAnyAccountsFromStore(store)
- this.accountTracker.store.subscribe(this.addAnyAccountsFromStore.bind(this))
+ this.syncAllAccountsFromStore(store)
+ this.accountTracker.store.subscribe(this.syncAllAccountsFromStore.bind(this))
}
- addAnyAccountsFromStore(store) {
- const balances = store.accounts
+ syncAllAccountsFromStore(store) {
+ const upstream = Object.keys(store.accounts)
+ const balances = Object.keys(this.balances)
+ .map(address => this.balances[address])
+ // Follow new addresses
for (let address in balances) {
this.trackAddressIfNotAlready(address)
}
+
+ // Unfollow old ones
+ balances.forEach(({ address }) => {
+ if (!upstream.includes(address)) {
+ delete this.balances[address]
+ }
+ })
}
trackAddressIfNotAlready (address) {