From c611abf080943bffdc377c6d60f0e9eff1cebb9e Mon Sep 17 00:00:00 2001 From: woodser Date: Mon, 17 Jun 2019 15:51:17 -0400 Subject: [PATCH] define MoneroTransferRequest meetsCriteria --- src/wallet/MoneroWallet.cpp | 18 ++++++------------ src/wallet/MoneroWalletModel.cpp | 9 ++++++++- src/wallet/MoneroWalletModel.h | 1 + 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index 2120c3d..2bc12fb 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -543,11 +543,9 @@ namespace monero { cout << "vector> getTransfers(request)" << endl; // normalize request + // TODO: this will modify original request, construct copy? add test MoneroTxRequest txReq = *(request.txRequest != boost::none ? *request.txRequest : shared_ptr(new MoneroTxRequest())); - //MoneroTxRequest txReq = MoneroTxRequest(); - //if (request.txRequest != boost::none) txReq = **request.txRequest; - // build parameters for wallet2->get_payments() uint64_t minHeight = txReq.minHeight == boost::none ? 0 : *txReq.minHeight; uint64_t maxHeight = txReq.maxHeight == boost::none ? CRYPTONOTE_MAX_BLOCK_NUMBER : min((uint64_t) CRYPTONOTE_MAX_BLOCK_NUMBER, *txReq.maxHeight); @@ -598,18 +596,14 @@ namespace monero { //throw runtime_error("isPool not implemented"); } - // TODO: apply filtering - - // collect resulting transfers + // filter and return transfers vector> transfers; - for (int i = 0; i < txs.size(); i++) { - shared_ptr tx = txs[i]; - for (int j = 0; j < tx->incomingTransfers.size(); j++) { - transfers.push_back(tx->incomingTransfers[j]); + for (const shared_ptr& tx : txs) { + if (tx->outgoingTransfer != boost::none && request.meetsCriteria(&(**tx->outgoingTransfer))) transfers.push_back(*tx->outgoingTransfer); + for (const shared_ptr& incomingTransfer : tx->incomingTransfers) { + if (request.meetsCriteria(&(*incomingTransfer))) transfers.push_back(incomingTransfer); // TODO: replace this with e.g. incomingTransfer.get() } - if (tx->outgoingTransfer != boost::none) transfers.push_back(*tx->outgoingTransfer); } - return transfers; } diff --git a/src/wallet/MoneroWalletModel.cpp b/src/wallet/MoneroWalletModel.cpp index 0c551b1..52f5db0 100644 --- a/src/wallet/MoneroWalletModel.cpp +++ b/src/wallet/MoneroWalletModel.cpp @@ -13,6 +13,9 @@ using namespace epee; // TODO: delete? */ namespace monero { + // ----------------------- UNDECLARED PRIVATE HELPERS ----------------------- + + // -------------------------- MODEL SERIALIZATION --------------------------- boost::property_tree::ptree MoneroAccount::toPropertyTree() const { @@ -115,6 +118,10 @@ namespace monero { // return txNode; //} - // ----------------------- UNDECLARED PRIVATE HELPERS ----------------------- + // --------------------------------- REQUESTS ------------------------------- + bool MoneroTransferRequest::meetsCriteria(const MoneroTransfer* transfer) const { + //return true; // TODO + return false; + } } diff --git a/src/wallet/MoneroWalletModel.h b/src/wallet/MoneroWalletModel.h index cab3afa..c4db8d3 100644 --- a/src/wallet/MoneroWalletModel.h +++ b/src/wallet/MoneroWalletModel.h @@ -159,6 +159,7 @@ namespace monero { vector> destinations; boost::optional hasDestinations; boost::optional> txRequest; + bool meetsCriteria(const MoneroTransfer* transfer) const; }; /**