transaction - promisify _checkPendingTxs

feature/default_network_editable
kumavis 7 years ago
parent d249da77d7
commit 67fdba5e42
  1. 68
      app/scripts/controllers/transactions.js

@ -3,6 +3,7 @@ const async = require('async')
const extend = require('xtend') const extend = require('xtend')
const ObservableStore = require('obs-store') const ObservableStore = require('obs-store')
const ethUtil = require('ethereumjs-util') const ethUtil = require('ethereumjs-util')
const pify = require('pify')
const TxProviderUtil = require('../lib/tx-utils') const TxProviderUtil = require('../lib/tx-utils')
const createId = require('../lib/random-id') const createId = require('../lib/random-id')
const NonceTracker = require('../lib/nonce-tracker') const NonceTracker = require('../lib/nonce-tracker')
@ -481,35 +482,48 @@ module.exports = class TransactionController extends EventEmitter {
// checks the network for signed txs and // checks the network for signed txs and
// if confirmed sets the tx status as 'confirmed' // if confirmed sets the tx status as 'confirmed'
_checkPendingTxs () { async _checkPendingTxs () {
var signedTxList = this.getFilteredTxList({status: 'submitted'}) const signedTxList = this.getFilteredTxList({status: 'submitted'})
if (!signedTxList.length) return try {
signedTxList.forEach((txMeta) => { await Promise.all(signedTxList.map((txMeta) => this._checkPendingTx(txMeta)))
var txHash = txMeta.hash } catch (err) {
var txId = txMeta.id console.error('TransactionController - Error updating pending transactions')
if (!txHash) { console.error(err)
const errReason = { }
errCode: 'No hash was provided', }
message: 'We had an error while submitting this transaction, please try again.',
} async _checkPendingTx (txMeta) {
return this.setTxStatusFailed(txId, errReason) const txHash = txMeta.hash
const txId = txMeta.id
// extra check in case there was an uncaught error during the
// signature and submission process
if (!txHash) {
const errReason = {
errCode: 'No hash was provided',
message: 'We had an error while submitting this transaction, please try again.',
} }
this.query.getTransactionByHash(txHash, (err, txParams) => { this.setTxStatusFailed(txId, errReason)
if (err || !txParams) { return
if (!txParams) return }
txMeta.err = { // get latest transaction status
isWarning: true, let txParams
errorCode: err, try {
message: 'There was a problem loading this transaction.', txParams = await pify((cb) => this.query.getTransactionByHash(txHash, cb))()
} if (!txParams) return
this.updateTx(txMeta) if (txParams.blockNumber) {
return log.error(err) this.setTxStatusConfirmed(txId)
} }
if (txParams.blockNumber) { } catch (err) {
this.setTxStatusConfirmed(txId) if (err || !txParams) {
txMeta.err = {
isWarning: true,
errorCode: err,
message: 'There was a problem loading this transaction.',
} }
}) this.updateTx(txMeta)
}) log.error(err)
}
}
} }
} }

Loading…
Cancel
Save