30 lines
891 B
JavaScript
30 lines
891 B
JavaScript
const _ = require('lodash/fp')
|
|
|
|
const txBatching = require('./tx-batching')
|
|
const wallet = require('./wallet')
|
|
|
|
function submitBatch (settings, batch) {
|
|
txBatching.getBatchTransactions(batch)
|
|
.then(txs => {
|
|
if (_.isEmpty(txs)) return Promise.resolve()
|
|
return wallet.sendCoinsBatch(settings, txs, batch.crypto_code)
|
|
.then(res => txBatching.confirmSentBatch(batch, res))
|
|
.catch(err => txBatching.setErroredBatch(batch, err.message))
|
|
})
|
|
}
|
|
|
|
function processBatches (settings, lifecycle) {
|
|
return txBatching.getBatchesByStatus(['open'])
|
|
.then(batches => {
|
|
_.each(batch => {
|
|
const elapsedMS = batch.time_elapsed * 1000
|
|
|
|
if (elapsedMS >= lifecycle) {
|
|
return txBatching.closeTransactionBatch(batch)
|
|
.then(() => submitBatch(settings, batch))
|
|
}
|
|
}, batches)
|
|
})
|
|
}
|
|
|
|
module.exports = processBatches
|