1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

put tx resubmission on the block event

This commit is contained in:
frankiebee 2017-06-12 16:11:37 -07:00
parent 33a32bb06b
commit 96fa29ffbc

View File

@ -9,7 +9,6 @@ const createId = require('../lib/random-id')
const denodeify = require('denodeify') const denodeify = require('denodeify')
const RETRY_LIMIT = 200 const RETRY_LIMIT = 200
const RESUBMIT_INTERVAL = 10000 // Ten seconds
module.exports = class TransactionController extends EventEmitter { module.exports = class TransactionController extends EventEmitter {
constructor (opts) { constructor (opts) {
@ -26,6 +25,7 @@ module.exports = class TransactionController extends EventEmitter {
this.query = opts.ethQuery this.query = opts.ethQuery
this.txProviderUtils = new TxProviderUtil(this.query) this.txProviderUtils = new TxProviderUtil(this.query)
this.blockTracker.on('block', this.checkForTxInBlock.bind(this)) this.blockTracker.on('block', this.checkForTxInBlock.bind(this))
this.blockTracker.on('block', this.continuallyResubmitPendingTxs.bind(this))
this.signEthTx = opts.signTransaction this.signEthTx = opts.signTransaction
this.nonceLock = Semaphore(1) this.nonceLock = Semaphore(1)
@ -34,8 +34,6 @@ module.exports = class TransactionController extends EventEmitter {
this.store.subscribe(() => this._updateMemstore()) this.store.subscribe(() => this._updateMemstore())
this.networkStore.subscribe(() => this._updateMemstore()) this.networkStore.subscribe(() => this._updateMemstore())
this.preferencesStore.subscribe(() => this._updateMemstore()) this.preferencesStore.subscribe(() => this._updateMemstore())
this.continuallyResubmitPendingTxs()
} }
getState () { getState () {
@ -411,16 +409,13 @@ module.exports = class TransactionController extends EventEmitter {
continuallyResubmitPendingTxs () { continuallyResubmitPendingTxs () {
const pending = this.getTxsByMetaData('status', 'submitted') const pending = this.getTxsByMetaData('status', 'submitted')
// only try resubmitting if their are transactions to resubmit
if (!pending.length) return
const resubmit = denodeify(this.resubmitTx.bind(this)) const resubmit = denodeify(this.resubmitTx.bind(this))
Promise.all(pending.map(txMeta => resubmit(txMeta))) Promise.all(pending.map(txMeta => resubmit(txMeta)))
.catch((reason) => { .catch((reason) => {
log.info('Problem resubmitting tx', reason) log.info('Problem resubmitting tx', reason)
}) })
.then(() => {
global.setTimeout(() => {
this.continuallyResubmitPendingTxs()
}, RESUBMIT_INTERVAL)
})
} }
resubmitTx (txMeta, cb) { resubmitTx (txMeta, cb) {