diff options
author | kumavis <kumavis@users.noreply.github.com> | 2017-01-14 05:26:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-14 05:26:57 +0800 |
commit | 9f162e72b48552b7ab3f2755114c9e2be6d0aace (patch) | |
tree | ef7323e51a8c80e76471cce2a745ca6a937bc2e5 /app/scripts/transaction-manager.js | |
parent | 29e83d71a82bfdbeadc9fbecfa97d73ef11fecfb (diff) | |
parent | c1253016fcd678445e860a666ee8c4e04506f01a (diff) | |
download | tangerine-wallet-browser-9f162e72b48552b7ab3f2755114c9e2be6d0aace.tar tangerine-wallet-browser-9f162e72b48552b7ab3f2755114c9e2be6d0aace.tar.gz tangerine-wallet-browser-9f162e72b48552b7ab3f2755114c9e2be6d0aace.tar.bz2 tangerine-wallet-browser-9f162e72b48552b7ab3f2755114c9e2be6d0aace.tar.lz tangerine-wallet-browser-9f162e72b48552b7ab3f2755114c9e2be6d0aace.tar.xz tangerine-wallet-browser-9f162e72b48552b7ab3f2755114c9e2be6d0aace.tar.zst tangerine-wallet-browser-9f162e72b48552b7ab3f2755114c9e2be6d0aace.zip |
Merge branch 'dev' into bug-submitTx
Diffstat (limited to 'app/scripts/transaction-manager.js')
-rw-r--r-- | app/scripts/transaction-manager.js | 48 |
1 files changed, 37 insertions, 11 deletions
diff --git a/app/scripts/transaction-manager.js b/app/scripts/transaction-manager.js index ec08b6af7..034cf3aeb 100644 --- a/app/scripts/transaction-manager.js +++ b/app/scripts/transaction-manager.js @@ -80,6 +80,7 @@ module.exports = class TransactionManager extends EventEmitter { var index = txList.findIndex(txData => txData.id === txId) txList[index] = txMeta this._saveTxList(txList) + this.emit('update') } get unapprovedTxCount () { @@ -121,6 +122,19 @@ module.exports = class TransactionManager extends EventEmitter { ], done) } + getMaxTxCostAndFee (txMeta) { + var txParams = txMeta.txParams + + var gasMultiplier = txMeta.gasMultiplier + var gasCost = new BN(ethUtil.stripHexPrefix(txParams.gas || txMeta.estimatedGas), 16) + var gasPrice = new BN(ethUtil.stripHexPrefix(txParams.gasPrice || '0x4a817c800'), 16) + gasPrice = gasPrice.mul(new BN(gasMultiplier * 100), 10).div(new BN(100, 10)) + var txFee = gasCost.mul(gasPrice) + var txValue = new BN(ethUtil.stripHexPrefix(txParams.value || '0x0'), 16) + var maxCost = txValue.add(txFee) + return {maxCost, txFee} + } + getUnapprovedTxList () { var txList = this.getTxList() return txList.filter((txMeta) => txMeta.status === 'unapproved') @@ -282,19 +296,31 @@ module.exports = class TransactionManager extends EventEmitter { // checks if a signed tx is in a block and // if included sets the tx status as 'confirmed' checkForTxInBlock () { - var signedTxList = this.getFilteredTxList({status: 'signed', err: undefined}) + var signedTxList = this.getFilteredTxList({status: 'signed'}) if (!signedTxList.length) return - signedTxList.forEach((tx) => { - var txHash = tx.hash - var txId = tx.id - if (!txHash) return - this.txProviderUtils.query.getTransactionByHash(txHash, (err, txMeta) => { - if (err || !txMeta) { - tx.err = err || 'Tx could possibly have not been submitted' - this.updateTx(tx) - return txMeta ? console.error(err) : console.debug(`txMeta is ${txMeta} for:`, tx) + signedTxList.forEach((txMeta) => { + var txHash = txMeta.hash + var txId = txMeta.id + if (!txHash) { + txMeta.err = { + errCode: 'No hash was provided', + message: 'We had an error while submitting this transaction, please try again.', + } + this.updateTx(txMeta) + return this._setTxStatus(txId, 'failed') + } + this.txProviderUtils.query.getTransactionByHash(txHash, (err, txParams) => { + if (err || !txParams) { + if (!txParams) return + txMeta.err = { + isWarning: true, + errorCode: err, + message: 'There was a problem loading this transaction.', + } + this.updateTx(txMeta) + return console.error(err) } - if (txMeta.blockNumber) { + if (txParams.blockNumber) { this.setTxStatusConfirmed(txId) } }) |