aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Finlay <dan@danfinlay.com>2017-06-15 06:17:46 +0800
committerDan Finlay <dan@danfinlay.com>2017-06-15 06:21:51 +0800
commit6fda78cd2b850c7414d598227a0ef6b4235f241e (patch)
treed4177c167922f070e464da2bbf0c7929f25ef4c7
parentb7b9e0c1ac203d39196753f39f17a1fe2f4751e5 (diff)
downloadtangerine-wallet-browser-6fda78cd2b850c7414d598227a0ef6b4235f241e.tar.gz
tangerine-wallet-browser-6fda78cd2b850c7414d598227a0ef6b4235f241e.tar.zst
tangerine-wallet-browser-6fda78cd2b850c7414d598227a0ef6b4235f241e.zip
Refresh token balance on network change
-rw-r--r--app/scripts/controllers/transactions.js1
-rw-r--r--package.json2
-rw-r--r--ui/app/components/token-list.js27
3 files changed, 23 insertions, 7 deletions
diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js
index 8be73fad8..d546615ed 100644
--- a/app/scripts/controllers/transactions.js
+++ b/app/scripts/controllers/transactions.js
@@ -389,7 +389,6 @@ module.exports = class TransactionController extends EventEmitter {
this.emit(`${txMeta.id}:${status}`, txId)
if (status === 'submitted' || status === 'rejected') {
this.emit(`${txMeta.id}:finished`, txMeta)
-
}
this.updateTx(txMeta)
this.emit('updateBadge')
diff --git a/package.json b/package.json
index edef4753f..8c4ef3dc4 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
"eth-query": "^2.1.1",
"eth-sig-util": "^1.1.1",
"eth-simple-keyring": "^1.1.1",
- "eth-token-tracker": "^1.0.6",
+ "eth-token-tracker": "^1.0.7",
"ethereumjs-tx": "^1.3.0",
"ethereumjs-util": "ethereumjs/ethereumjs-util#ac5d0908536b447083ea422b435da27f26615de9",
"ethereumjs-wallet": "^0.6.0",
diff --git a/ui/app/components/token-list.js b/ui/app/components/token-list.js
index 66cbddeda..90e7e876e 100644
--- a/ui/app/components/token-list.js
+++ b/ui/app/components/token-list.js
@@ -7,7 +7,7 @@ const contracts = require('eth-contract-metadata')
const Loading = require('./loading')
const tokens = []
-for (let address in contracts) {
+for (const address in contracts) {
const contract = contracts[address]
if (contract.erc20) {
contract.address = address
@@ -19,7 +19,7 @@ module.exports = TokenList
inherits(TokenList, Component)
function TokenList () {
- this.state = { tokens, isLoading: true }
+ this.state = { tokens, isLoading: true, network: null }
Component.call(this)
}
@@ -68,17 +68,23 @@ TokenList.prototype.render = function () {
}
TokenList.prototype.componentDidMount = function () {
+ this.createFreshTokenTracker()
+}
+
+TokenList.prototype.createFreshTokenTracker = function () {
+ if (this.tracker) {
+ this.tracker.stop()
+ }
+
if (!global.ethereumProvider) return
const { userAddress } = this.props
-
this.tracker = new TokenTracker({
userAddress,
provider: global.ethereumProvider,
- tokens: this.state.tokens,
+ tokens: tokens,
pollingInterval: 8000,
})
- this.setState({ tokens: this.tracker.serialize() })
this.tracker.on('update', (tokenData) => {
this.updateBalances(tokenData)
})
@@ -92,6 +98,17 @@ TokenList.prototype.componentDidMount = function () {
})
}
+TokenList.prototype.componentWillUpdate = function (nextProps) {
+ if (nextProps.network === 'loading') return
+ const oldNet = this.props.network
+ const newNet = nextProps.network
+
+ if (oldNet && newNet && newNet !== oldNet) {
+ this.setState({ isLoading: true })
+ this.createFreshTokenTracker()
+ }
+}
+
TokenList.prototype.updateBalances = function (tokenData) {
const heldTokens = tokenData.filter(token => token.balance !== '0' && token.string !== '0.000')
this.setState({ tokens: heldTokens, isLoading: false })