aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/transaction-manager.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/transaction-manager.js')
-rw-r--r--app/scripts/transaction-manager.js42
1 files changed, 23 insertions, 19 deletions
diff --git a/app/scripts/transaction-manager.js b/app/scripts/transaction-manager.js
index 031993424..fd136a51b 100644
--- a/app/scripts/transaction-manager.js
+++ b/app/scripts/transaction-manager.js
@@ -12,10 +12,8 @@ module.exports = class TransactionManager extends EventEmitter {
super()
this.txList = opts.txList || []
this._setTxList = opts.setTxList
- this._unconfTxCbs = {}
this.txHistoryLimit = opts.txHistoryLimit
- // txManager :: tx approvals and rejection cb's
-
+ this.getSelectedAccount = opts.getSelectedAccount
this.provider = opts.provider
this.blockTracker = opts.blockTracker
this.txProviderUtils = new TxProviderUtil(this.provider)
@@ -25,9 +23,11 @@ module.exports = class TransactionManager extends EventEmitter {
}
getState () {
+ var selectedAccount = this.getSelectedAccount()
return {
transactions: this.getTxList(),
unconfTxs: this.getUnapprovedTxList(),
+ selectedAccountTxList: this.getFilteredTxList({metamaskNetworkId: this.getNetwork(), from: selectedAccount}),
}
}
@@ -37,14 +37,21 @@ module.exports = class TransactionManager extends EventEmitter {
}
// Adds a tx to the txlist
- addTx (txMeta, onTxDoneCb = noop) {
+ addTx (txMeta, onTxDoneCb = warn) {
var txList = this.getTxList()
var txHistoryLimit = this.txHistoryLimit
+
+ // checks if the length of th tx history is
+ // longer then desired persistence limit
+ // and then if it is removes only confirmed
+ // or rejected tx's.
+ // not tx's that are pending or unapproved
if (txList.length > txHistoryLimit - 1) {
var index = txList.findIndex((metaTx) => metaTx.status === 'confirmed' || metaTx.status === 'rejected')
- index ? txList.splice(index, index) : txList.shift()
+ txList.splice(index, 1)
}
txList.push(txMeta)
+
this._saveTxList(txList)
// keep the onTxDoneCb around in a listener
// for after approval/denial (requires user interaction)
@@ -58,14 +65,14 @@ module.exports = class TransactionManager extends EventEmitter {
onTxDoneCb(null, false)
})
- this.emit('update')
+ this.emit('updateBadge')
this.emit(`${txMeta.id}:unapproved`, txMeta)
}
// gets tx by Id and returns it
getTx (txId, cb) {
var txList = this.getTxList()
- var txMeta = txList.find((txData) => txData.id === txId)
+ var txMeta = txList.find(txData => txData.id === txId)
return cb ? cb(txMeta) : txMeta
}
@@ -73,7 +80,7 @@ module.exports = class TransactionManager extends EventEmitter {
updateTx (txMeta) {
var txId = txMeta.id
var txList = this.getTxList()
- var index = txList.findIndex((txData) => txData.id === txId)
+ var index = txList.findIndex(txData => txData.id === txId)
txList[index] = txMeta
this._saveTxList(txList)
}
@@ -119,16 +126,14 @@ module.exports = class TransactionManager extends EventEmitter {
}, {})
}
- approveTransaction (txId, cb) {
+ approveTransaction (txId, cb = warn) {
this.setTxStatusSigned(txId)
cb()
}
- cancelTransaction (txId, cb) {
+ cancelTransaction (txId, cb = warn) {
this.setTxStatusRejected(txId)
- if (cb && typeof cb === 'function') {
- cb()
- }
+ cb()
}
// formats txParams so the keyringController can sign it
@@ -148,15 +153,14 @@ module.exports = class TransactionManager extends EventEmitter {
txParams.gasLimit = normalize(txParams.gasLimit || txParams.gas)
txParams.nonce = normalize(txParams.nonce)
const ethTx = new Transaction(txParams)
- // this.updateTxParams(txParams.metamaskId, ethTx)
// listener is assigned in metamaskController
- this.emit(`${txParams.metamaskId}:formated`, ethTx, address, txParams.metamaskId, cb)
+ this.emit(`${txParams.metamaskId}:formatted`, ethTx, address, txParams.metamaskId, cb)
}
// receives a signed tx object and updates the tx hash
// and pass it to the cb to be sent off
- resolveSignedTransaction ({tx, txId, cb}) {
+ resolveSignedTransaction ({tx, txId, cb = warn}) {
// Add the tx hash to the persisted meta-tx object
var txHash = ethUtil.bufferToHex(tx.hash())
var metaTx = this.getTx(txId)
@@ -212,13 +216,13 @@ module.exports = class TransactionManager extends EventEmitter {
// should update the status of the tx to 'signed'.
setTxStatusSigned (txId) {
this._setTxStatus(txId, 'signed')
- this.emit('update')
+ this.emit('updateBadge')
}
// should update the status of the tx to 'rejected'.
setTxStatusRejected (txId) {
this._setTxStatus(txId, 'rejected')
- this.emit('update')
+ this.emit('updateBadge')
}
setTxStatusConfirmed (txId) {
@@ -281,4 +285,4 @@ module.exports = class TransactionManager extends EventEmitter {
}
-const noop = () => console.warn('noop was used no cb provided')
+const warn = () => console.warn('warn was used no cb provided')