nifty-wallet/app/scripts/lib/pending-balance-calculator.js

42 lines
995 B
JavaScript
Raw Normal View History

2017-09-06 14:36:15 -07:00
const BN = require('ethereumjs-util').BN
const EthQuery = require('ethjs-query')
2017-09-07 11:59:15 -07:00
const normalize = require('eth-sig-util').normalize
2017-09-06 14:36:15 -07:00
class PendingBalanceCalculator {
constructor ({ getBalance, getPendingTransactions }) {
this.getPendingTransactions = getPendingTransactions
this.getBalance = getBalance
}
async getBalance() {
2017-09-07 11:59:15 -07:00
console.log('getting balance')
2017-09-06 14:37:46 -07:00
const results = await Promise.all([
this.getBalance(),
this.getPendingTransactions(),
])
2017-09-07 11:59:15 -07:00
console.dir(results)
2017-09-06 14:37:46 -07:00
const balance = results[0]
const pending = results[1]
2017-09-07 11:59:15 -07:00
console.dir({ balance, pending })
const pendingValue = pending.reduce(function (total, tx) {
return total.sub(this.valueFor(tx))
}, new BN(0))
const balanceBn = new BN(normalize(balance))
return `0x${ balanceBn.sub(pendingValue).toString(16) }`
}
valueFor (tx) {
const value = new BN(normalize(tx.txParams.value))
return value
2017-09-06 14:36:15 -07:00
}
}
module.exports = PendingBalanceCalculator