aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/transaction-manager.js
diff options
context:
space:
mode:
authorkumavis <kumavis@users.noreply.github.com>2017-01-14 05:26:57 +0800
committerGitHub <noreply@github.com>2017-01-14 05:26:57 +0800
commit9f162e72b48552b7ab3f2755114c9e2be6d0aace (patch)
treeef7323e51a8c80e76471cce2a745ca6a937bc2e5 /app/scripts/transaction-manager.js
parent29e83d71a82bfdbeadc9fbecfa97d73ef11fecfb (diff)
parentc1253016fcd678445e860a666ee8c4e04506f01a (diff)
downloadtangerine-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.js48
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)
}
})