aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/scripts/controllers/transactions.js22
-rw-r--r--app/scripts/lib/tx-state-manager.js21
-rw-r--r--app/scripts/metamask-controller.js2
-rw-r--r--test/unit/tx-controller-test.js2
4 files changed, 23 insertions, 24 deletions
diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js
index 636424c64..3cb6a609e 100644
--- a/app/scripts/controllers/transactions.js
+++ b/app/scripts/controllers/transactions.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()
diff --git a/app/scripts/lib/tx-state-manager.js b/app/scripts/lib/tx-state-manager.js
index 661523f10..843592504 100644
--- a/app/scripts/lib/tx-state-manager.js
+++ b/app/scripts/lib/tx-state-manager.js
@@ -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 })
}
} \ No newline at end of file
diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js
index 7137190ac..23049c46d 100644
--- a/app/scripts/metamask-controller.js
+++ b/app/scripts/metamask-controller.js
@@ -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) => {
diff --git a/test/unit/tx-controller-test.js b/test/unit/tx-controller-test.js
index 937ac55de..479010b87 100644
--- a/test/unit/tx-controller-test.js
+++ b/test/unit/tx-controller-test.js
@@ -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) => {