aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorfrankiebee <frankie.diamond@gmail.com>2018-05-23 07:41:00 +0800
committerfrankiebee <frankie.diamond@gmail.com>2018-05-23 07:42:06 +0800
commitc4b09da34e9950ea485dfecb810726e49b683dcd (patch)
tree7e38fc2d1156ca11709f72333c76da256976da91 /app
parent10aecf49227098fb7fdbd7db193a9dcc6fecf5af (diff)
downloadtangerine-wallet-browser-c4b09da34e9950ea485dfecb810726e49b683dcd.tar
tangerine-wallet-browser-c4b09da34e9950ea485dfecb810726e49b683dcd.tar.gz
tangerine-wallet-browser-c4b09da34e9950ea485dfecb810726e49b683dcd.tar.bz2
tangerine-wallet-browser-c4b09da34e9950ea485dfecb810726e49b683dcd.tar.lz
tangerine-wallet-browser-c4b09da34e9950ea485dfecb810726e49b683dcd.tar.xz
tangerine-wallet-browser-c4b09da34e9950ea485dfecb810726e49b683dcd.tar.zst
tangerine-wallet-browser-c4b09da34e9950ea485dfecb810726e49b683dcd.zip
transactions - update pending-tx-tracker to use the new block tracker
Diffstat (limited to 'app')
-rw-r--r--app/scripts/controllers/transactions/pending-tx-tracker.js25
1 files changed, 18 insertions, 7 deletions
diff --git a/app/scripts/controllers/transactions/pending-tx-tracker.js b/app/scripts/controllers/transactions/pending-tx-tracker.js
index 6e2fcb40b..bd26a72d9 100644
--- a/app/scripts/controllers/transactions/pending-tx-tracker.js
+++ b/app/scripts/controllers/transactions/pending-tx-tracker.js
@@ -27,6 +27,7 @@ class PendingTransactionTracker extends EventEmitter {
this.getPendingTransactions = config.getPendingTransactions
this.getCompletedTransactions = config.getCompletedTransactions
this.publishTransaction = config.publishTransaction
+ this.confirmTransaction = config.confirmTransaction
this._checkPendingTxs()
}
@@ -37,7 +38,8 @@ class PendingTransactionTracker extends EventEmitter {
@emits tx:confirmed
@emits tx:failed
*/
- checkForTxInBlock (block) {
+ async checkForTxInBlock (blockNumber) {
+ const block = await this._getBlock(blockNumber)
const signedTxList = this.getPendingTransactions()
if (!signedTxList.length) return
signedTxList.forEach((txMeta) => {
@@ -51,9 +53,12 @@ class PendingTransactionTracker extends EventEmitter {
return
}
+ if (!block.transactions.length) return
- block.transactions.forEach((tx) => {
- if (tx.hash === txHash) this.emit('tx:confirmed', txId)
+ block.transactions.forEach((hash) => {
+ if (hash === txHash) {
+ this.confirmTransaction(txId)
+ }
})
})
}
@@ -70,7 +75,7 @@ class PendingTransactionTracker extends EventEmitter {
return
}
// if we synced by more than one block, check for missed pending transactions
- const diff = Number.parseInt(newBlock.number, 16) - Number.parseInt(oldBlock.number, 16)
+ const diff = Number.parseInt(newBlock, 16) - Number.parseInt(oldBlock, 16)
if (diff > 1) this._checkPendingTxs()
}
@@ -79,11 +84,11 @@ class PendingTransactionTracker extends EventEmitter {
@param block {object} - a block object
@emits tx:warning
*/
- resubmitPendingTxs (block) {
+ resubmitPendingTxs (blockNumber) {
const pending = this.getPendingTransactions()
// only try resubmitting if their are transactions to resubmit
if (!pending.length) return
- pending.forEach((txMeta) => this._resubmitTx(txMeta, block.number).catch((err) => {
+ pending.forEach((txMeta) => this._resubmitTx(txMeta, blockNumber).catch((err) => {
/*
Dont marked as failed if the error is a "known" transaction warning
"there is already a transaction with the same sender-nonce
@@ -179,7 +184,7 @@ class PendingTransactionTracker extends EventEmitter {
txParams = await this.query.getTransactionByHash(txHash)
if (!txParams) return
if (txParams.blockNumber) {
- this.emit('tx:confirmed', txId)
+ this.confirmTransaction(txId)
}
} catch (err) {
txMeta.warning = {
@@ -206,11 +211,17 @@ class PendingTransactionTracker extends EventEmitter {
nonceGlobalLock.releaseLock()
}
+ async _getBlock (blockNumber) {
+ return await this.query.getBlockByNumber(blockNumber, false)
+ }
+
/**
checks to see if a confirmed txMeta has the same nonce
@param txMeta {Object} - txMeta object
@returns {boolean}
*/
+
+
async _checkIfNonceIsTaken (txMeta) {
const address = txMeta.txParams.from
const completed = this.getCompletedTransactions(address)