diff --git a/lib/server.js b/lib/server.js index f9e71b4..e594aa0 100644 --- a/lib/server.js +++ b/lib/server.js @@ -2778,26 +2778,47 @@ WalletService.prototype.getTxHistory = function(opts, cb) { var from = opts.skip || 0; var to = from + opts.limit; - async.parallel([ + + async.waterfall([ function(next) { getNormalizedTxs(addresses, from, to, next); }, - function(next) { - self.storage.fetchTxs(self.walletId, {}, next); - }, - function(next) { - self.storage.fetchTxNotes(self.walletId, {}, next); + function(txs, next) { + // Fetch all proposals in [t - 7 days, t + 1 day] + var minTs = _.min(txs.items, 'time').time - 7 * 24 * 3600; + var maxTs = _.max(txs.items, 'time').time + 1 * 24 * 3600; + + async.parallel([ + + function(done) { + self.storage.fetchTxs(self.walletId, { + minTs: minTs, + maxTs: maxTs + }, done); + }, + function(done) { + self.storage.fetchTxNotes(self.walletId, { + minTs: minTs + }, done); + }, + ], function(err, res) { + return next(err, { + txs: txs, + txps: res[0], + notes: res[1] + }); + }); }, ], function(err, res) { if (err) return cb(err); - var finalTxs = decorate(res[0].items, addresses, res[1], res[2]); + var finalTxs = decorate(res.txs.items, addresses, res.txps, res.notes); - if (res[0].fromCache) + if (res.txs.fromCache) log.debug("History from cache for:", self.walletId, from, to); - return cb(null, finalTxs, !!res[0].fromCache); + return cb(null, finalTxs, !!res.txs.fromCache); }); }); }; diff --git a/test/integration/server.js b/test/integration/server.js index 79df54d..d6d71d9 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -5619,7 +5619,7 @@ describe('Wallet service', function() { txid: '1', confirmations: 1, fees: 100, - time: 1, + time: 12345, inputs: [{ address: mainAddresses[0].address, amount: 500, @@ -5638,7 +5638,7 @@ describe('Wallet service', function() { tx.action.should.equal('sent'); tx.amount.should.equal(400); tx.fees.should.equal(100); - tx.time.should.equal(1); + tx.time.should.equal(12345); done(); }); }); @@ -5648,7 +5648,7 @@ describe('Wallet service', function() { txid: '1', confirmations: 1, fees: 100, - time: 1, + time: Date.now() / 1000, inputs: [{ address: mainAddresses[0].address, amount: 500, @@ -5715,7 +5715,7 @@ describe('Wallet service', function() { txid: txp.txid, confirmations: 1, fees: 5460, - time: 1, + time: Date.now() / 1000, inputs: [{ address: tx.inputs[0].address, amount: utxos[0].satoshis,