From 2252b8fcf3e1cb1c206cc9b575f3eba4949d673a Mon Sep 17 00:00:00 2001 From: woodser Date: Wed, 10 Jul 2019 16:29:52 -0400 Subject: [PATCH] sorting transfers --- src/wallet/MoneroWallet.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index b0f30b0..c58daca 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -391,6 +391,14 @@ namespace monero { else return true; } + /** + * Returns true iff transfer1 is ordered before transfer2 by ascending account and subaddress indices. + */ + bool incomingTransferBefore(const shared_ptr& transfer1, const shared_ptr& transfer2) { + if (transfer1->accountIndex.get() < transfer2->accountIndex.get()) return true; + else if (transfer1->accountIndex.get() == transfer2->accountIndex.get()) return transfer1->subaddressIndex.get() < transfer2->subaddressIndex.get(); + else return false; + } /** * ---------------- DUPLICATED WALLET RPC TRANSFER CODE --------------------- @@ -1388,6 +1396,9 @@ namespace monero { vector> transfers; for (const shared_ptr& tx : txs) { + // sort transfers + sort(tx->incomingTransfers.begin(), tx->incomingTransfers.end(), incomingTransferBefore); + // collect outgoing transfer, erase if filtered TODO: java/js do not erase filtered transfers if (tx->outgoingTransfer != boost::none && request.meetsCriteria(tx->outgoingTransfer.get().get())) transfers.push_back(tx->outgoingTransfer.get()); else tx->outgoingTransfer = boost::none;