|
|
@ -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) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|