match other controller patterns

feature/default_network_editable
frankiebee 7 years ago
parent 62f26c5ba8
commit 3ad67d1b14
  1. 22
      app/scripts/controllers/transactions.js
  2. 21
      app/scripts/lib/tx-state-manager.js
  3. 2
      app/scripts/metamask-controller.js
  4. 2
      test/unit/tx-controller-test.js

@ -40,9 +40,7 @@ module.exports = class TransactionController extends EventEmitter {
this.txGasUtil = new TxGasUtil(this.provider)
this.txStateManager = new TransactionStateManger({
initState: extend({
transactions: [],
}, opts.initState),
initState: opts.initState,
txHistoryLimit: opts.txHistoryLimit,
getNetwork: this.getNetwork.bind(this),
})
@ -70,15 +68,12 @@ module.exports = class TransactionController extends EventEmitter {
publishTransaction: this.query.sendRawTransaction,
getPendingTransactions: this.txStateManager.getPendingTransactions.bind(this.txStateManager),
giveUpOnTransaction: (txId) => {
const msg = `Gave up submitting after 3500 blocks un-mined.`
this.setTxStatusFailed(txId, msg)
const err = new Error(`Gave up submitting after 3500 blocks un-mined.`)
this.setTxStatusFailed(txId, err)
},
})
this.txStateManager.subscribe(() => {
this.emit('update')
this.emit('updateBadge')
})
this.txStateManager.store.subscribe(() => this.emit('updateBadge'))
this.pendingTxTracker.on('txWarning', this.txStateManager.updateTx.bind(this.txStateManager))
this.pendingTxTracker.on('txFailed', this.txStateManager.setTxStatusFailed.bind(this.txStateManager))
@ -94,7 +89,7 @@ module.exports = class TransactionController extends EventEmitter {
this.blockTracker.on('sync', this.pendingTxTracker.queryPendingTxs.bind(this.pendingTxTracker))
// memstore is computed from a few different stores
this._updateMemstore()
this.txStateManager.subscribe(() => this._updateMemstore())
this.txStateManager.store.subscribe(() => this._updateMemstore())
this.networkStore.subscribe(() => this._updateMemstore())
this.preferencesStore.subscribe(() => this._updateMemstore())
}
@ -250,10 +245,9 @@ module.exports = class TransactionController extends EventEmitter {
this.txStateManager.updateTx(txMeta)
}
/* _____________________________________
| |
| PRIVATE METHODS |
|______________________________________*/
//
// PRIVATE METHODS
//
_updateMemstore () {
const unapprovedTxs = this.txStateManager.getUnapprovedTxList()

@ -1,10 +1,16 @@
const extend = require('xtend')
const EventEmitter = require('events')
const ObservableStore = require('obs-store')
const txStateHistoryHelper = require('./tx-state-history-helper')
module.exports = class TransactionStateManger extends ObservableStore {
module.exports = class TransactionStateManger extends EventEmitter {
constructor ({initState, txHistoryLimit, getNetwork}) {
super(initState)
super()
this.store = new ObservableStore(
extend({
transactions: [],
}, initState))
this.txHistoryLimit = txHistoryLimit
this.getNetwork = getNetwork
}
@ -20,7 +26,7 @@ module.exports = class TransactionStateManger extends ObservableStore {
}
getFullTxList () {
return this.getState().transactions
return this.store.getState().transactions
}
// Returns the tx list
@ -196,10 +202,9 @@ module.exports = class TransactionStateManger extends ObservableStore {
this._setTxStatus(txId, 'failed')
}
/* _____________________________________
| |
| PRIVATE METHODS |
|______________________________________*/
//
// PRIVATE METHODS
//
// Should find the tx in the tx list and
// update it.
@ -225,6 +230,6 @@ module.exports = class TransactionStateManger extends ObservableStore {
// Saves the new/updated txList.
// Function is intended only for internal use
_saveTxList (transactions) {
this.updateState({ transactions })
this.store.updateState({ transactions })
}
}

@ -133,7 +133,7 @@ module.exports = class MetamaskController extends EventEmitter {
this.publicConfigStore = this.initPublicConfigStore()
// manual disk state subscriptions
this.txController.txStateManager.subscribe((state) => {
this.txController.txStateManager.store.subscribe((state) => {
this.store.updateState({ TransactionController: state })
})
this.keyringController.store.subscribe((state) => {

@ -197,7 +197,7 @@ describe('Transaction Controller', function () {
txParams: {}
}
const eventNames = ['update', 'updateBadge', '1:unapproved']
const eventNames = ['updateBadge', '1:unapproved']
const listeners = []
eventNames.forEach((eventName) => {
listeners.push(new Promise((resolve) => {

Loading…
Cancel
Save