controllers - transactions - fix tx status update on boot

feature/default_network_editable
kumavis 7 years ago
parent 16d0db15e0
commit 58de5671cc
  1. 12
      app/scripts/controllers/transactions/index.js
  2. 3
      app/scripts/controllers/transactions/pending-tx-tracker.js

@ -83,7 +83,11 @@ class TransactionController extends EventEmitter {
this.txStateManager.store.subscribe(() => this._updateMemstore())
this.networkStore.subscribe(() => this._updateMemstore())
this.preferencesStore.subscribe(() => this._updateMemstore())
// request state update to finalize initialization
this._updatePendingTxsAfterFirstBlock()
}
/** @returns {number} the chainId*/
getChainId () {
const networkState = this.networkStore.getState()
@ -349,6 +353,14 @@ class TransactionController extends EventEmitter {
this.getFilteredTxList = (opts) => this.txStateManager.getFilteredTxList(opts)
}
// called once on startup
async _updatePendingTxsAfterFirstBlock () {
// wait for first block so we know we're ready
await this.blockTracker.getLatestBlock()
// get status update for all pending transactions (for the current network)
await this.pendingTxTracker.updatePendingTxs()
}
/**
If transaction controller was rebooted with transactions that are uncompleted
in steps of the transaction signing or user confirmation process it will either

@ -34,11 +34,10 @@ class PendingTransactionTracker extends EventEmitter {
checks the network for signed txs and releases the nonce global lock if it is
*/
async updatePendingTxs () {
const pendingTxs = this.getPendingTransactions()
// in order to keep the nonceTracker accurate we block it while updating pending transactions
console.log('updating pending txs....', pendingTxs)
const nonceGlobalLock = await this.nonceTracker.getGlobalLock()
try {
const pendingTxs = this.getPendingTransactions()
await Promise.all(pendingTxs.map((txMeta) => this._checkPendingTx(txMeta)))
} catch (err) {
log.error('PendingTransactionTracker - Error updating pending transactions')

Loading…
Cancel
Save