diff options
author | Frankie <frankie.diamond@gmail.com> | 2017-07-27 02:56:13 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-27 02:56:13 +0800 |
commit | f23efec3e3d9f42484f633ba0444db350875f898 (patch) | |
tree | a951967d7c5760ec2e66cb358fdf1b3c065cf1c9 /app/scripts | |
parent | 0deb617d8f879b9a05c4581f16f5790cafa9789a (diff) | |
parent | 55a55141d08f7827cb23f4213a6d88351803fbff (diff) | |
download | tangerine-wallet-browser-f23efec3e3d9f42484f633ba0444db350875f898.tar tangerine-wallet-browser-f23efec3e3d9f42484f633ba0444db350875f898.tar.gz tangerine-wallet-browser-f23efec3e3d9f42484f633ba0444db350875f898.tar.bz2 tangerine-wallet-browser-f23efec3e3d9f42484f633ba0444db350875f898.tar.lz tangerine-wallet-browser-f23efec3e3d9f42484f633ba0444db350875f898.tar.xz tangerine-wallet-browser-f23efec3e3d9f42484f633ba0444db350875f898.tar.zst tangerine-wallet-browser-f23efec3e3d9f42484f633ba0444db350875f898.zip |
Merge pull request #1830 from MetaMask/providerProxyFix
NonceTracker - Provider proxy fix
Diffstat (limited to 'app/scripts')
-rw-r--r-- | app/scripts/controllers/transactions.js | 1 | ||||
-rw-r--r-- | app/scripts/lib/nonce-tracker.js | 17 |
2 files changed, 12 insertions, 6 deletions
diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js index 8f53ffa8c..f71659042 100644 --- a/app/scripts/controllers/transactions.js +++ b/app/scripts/controllers/transactions.js @@ -24,7 +24,6 @@ module.exports = class TransactionController extends EventEmitter { this.blockTracker = opts.blockTracker this.nonceTracker = new NonceTracker({ provider: this.provider, - blockTracker: this.provider._blockTracker, getPendingTransactions: (address) => { return this.getFilteredTxList({ from: address, diff --git a/app/scripts/lib/nonce-tracker.js b/app/scripts/lib/nonce-tracker.js index c0746bd87..8328e81ec 100644 --- a/app/scripts/lib/nonce-tracker.js +++ b/app/scripts/lib/nonce-tracker.js @@ -4,8 +4,8 @@ const Mutex = require('await-semaphore').Mutex class NonceTracker { - constructor ({ blockTracker, provider, getPendingTransactions }) { - this.blockTracker = blockTracker + constructor ({ provider, getPendingTransactions }) { + this.provider = provider this.ethQuery = new EthQuery(provider) this.getPendingTransactions = getPendingTransactions this.lockMap = {} @@ -39,16 +39,17 @@ class NonceTracker { assert(Number.isInteger(nextNonce), `nonce-tracker - nextNonce is not an integer - got: (${typeof nextNonce}) "${nextNonce}"`) // collect the numbers used to calculate the nonce for debugging const blockNumber = currentBlock.number - const nonceDetails = { blockNumber, baseCount, pendingCount } + const nonceDetails = { blockNumber, baseCount, baseCountHex, pendingCount } // return nonce and release cb return { nextNonce, nonceDetails, releaseLock } } async _getCurrentBlock () { - const currentBlock = this.blockTracker.getCurrentBlock() + const blockTracker = this._getBlockTracker() + const currentBlock = blockTracker.getCurrentBlock() if (currentBlock) return currentBlock return await Promise((reject, resolve) => { - this.blockTracker.once('latest', resolve) + blockTracker.once('latest', resolve) }) } @@ -82,6 +83,12 @@ class NonceTracker { return mutex } + // this is a hotfix for the fact that the blockTracker will + // change when the network changes + _getBlockTracker () { + return this.provider._blockTracker + } + } module.exports = NonceTracker |