aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2017-07-12 03:29:20 +0800
committerGitHub <noreply@github.com>2017-07-12 03:29:20 +0800
commita1fd9bc6bebcad4421a10ab85f525b9686103549 (patch)
tree01ac51e1506cd5c7a989cb6e071982e72f1714b4 /app
parent0eee232e26dec61512e36bedf131ce0f7ce1ddd4 (diff)
parentc7b9e3fb1878cebbab26d5343cc18084a601c6bb (diff)
downloadtangerine-wallet-browser-a1fd9bc6bebcad4421a10ab85f525b9686103549.tar
tangerine-wallet-browser-a1fd9bc6bebcad4421a10ab85f525b9686103549.tar.gz
tangerine-wallet-browser-a1fd9bc6bebcad4421a10ab85f525b9686103549.tar.bz2
tangerine-wallet-browser-a1fd9bc6bebcad4421a10ab85f525b9686103549.tar.lz
tangerine-wallet-browser-a1fd9bc6bebcad4421a10ab85f525b9686103549.tar.xz
tangerine-wallet-browser-a1fd9bc6bebcad4421a10ab85f525b9686103549.tar.zst
tangerine-wallet-browser-a1fd9bc6bebcad4421a10ab85f525b9686103549.zip
Merge pull request #1762 from MetaMask/ImproveRetryLogic
Improve retry logic
Diffstat (limited to 'app')
-rw-r--r--app/scripts/controllers/transactions.js13
-rw-r--r--app/scripts/lib/tx-utils.js9
2 files changed, 10 insertions, 12 deletions
diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js
index c0d4841a9..43735a691 100644
--- a/app/scripts/controllers/transactions.js
+++ b/app/scripts/controllers/transactions.js
@@ -447,27 +447,16 @@ module.exports = class TransactionController extends EventEmitter {
_resubmitTx (txMeta, cb) {
const address = txMeta.txParams.from
const balance = this.ethStore.getState().accounts[address].balance
- const nonce = Number.parseInt(this.ethStore.getState().accounts[address].nonce)
- const txNonce = Number.parseInt(txMeta.txParams.nonce)
- const gtBalance = Number.parseInt(txMeta.txParams.value) > Number.parseInt(balance)
if (!('retryCount' in txMeta)) txMeta.retryCount = 0
// if the value of the transaction is greater then the balance, fail.
- if (gtBalance) {
+ if (!this.txProviderUtils.sufficientBalance(txMeta.txParams, balance)) {
const message = 'Insufficient balance.'
this.setTxStatusFailed(txMeta.id, { message })
cb()
return log.error(message)
}
- // if the nonce of the transaction is lower then the accounts nonce, fail.
- if (txNonce < nonce) {
- const message = 'Invalid nonce.'
- this.setTxStatusFailed(txMeta.id, { message })
- cb()
- return log.error(message)
- }
-
// Only auto-submit already-signed txs:
if (!('rawTx' in txMeta)) return cb()
diff --git a/app/scripts/lib/tx-utils.js b/app/scripts/lib/tx-utils.js
index 149d93102..4e780fcc0 100644
--- a/app/scripts/lib/tx-utils.js
+++ b/app/scripts/lib/tx-utils.js
@@ -118,6 +118,15 @@ module.exports = class txProviderUtils {
}
}
+ sufficientBalance (tx, hexBalance) {
+ const balance = hexToBn(hexBalance)
+ const value = hexToBn(tx.value)
+ const gasLimit = hexToBn(tx.gas)
+ const gasPrice = hexToBn(tx.gasPrice)
+
+ const maxCost = value.add(gasLimit.mul(gasPrice))
+ return balance.gte(maxCost)
+ }
}