diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index 273b861..7d8661d 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -712,7 +712,7 @@ namespace monero { shared_ptr tx = txIter->second; // collect outgoing transfer, erase if filtered TODO: java/js do not erase filtered transfers - if (tx->outgoingTransfer != boost::none && request.meetsCriteria((*tx->outgoingTransfer).get())) transfers.push_back(*tx->outgoingTransfer); + if (tx->outgoingTransfer != boost::none && request.meetsCriteria(tx->outgoingTransfer.get().get())) transfers.push_back(tx->outgoingTransfer.get()); else tx->outgoingTransfer = boost::none; // collect incoming transfers, erase if filtered @@ -725,6 +725,9 @@ namespace monero { iter = tx->incomingTransfers.erase(iter); } } + + // remove unrequested txs + if (tx->outgoingTransfer == boost::none && tx->incomingTransfers.empty()) tx->block.get()->txs.erase(std::remove(tx->block.get()->txs.begin(), tx->block.get()->txs.end(), tx), tx->block.get()->txs.end()); // TODO, no way to use const_iterator? } //cout << "7" << endl; cout << "MoneroWallet.cpp getTransfers() returning " << transfers.size() << " transfers" << endl; @@ -769,11 +772,11 @@ namespace monero { vouts.push_back(voutWallet); voutIter++; } else { - voutIter = tx->vouts.erase(voutIter); // remove irrelevant vouts + voutIter = tx->vouts.erase(voutIter); // remove unrequested vouts } } - // remove irrelevant txs + // remove txs without requested transfer if (tx->vouts.empty()) tx->block.get()->txs.erase(std::remove(tx->block.get()->txs.begin(), tx->block.get()->txs.end(), tx), tx->block.get()->txs.end()); // TODO, no way to use const_iterator? } return vouts; diff --git a/src/wallet/MoneroWalletModel.cpp b/src/wallet/MoneroWalletModel.cpp index 1ece942..b163a6d 100644 --- a/src/wallet/MoneroWalletModel.cpp +++ b/src/wallet/MoneroWalletModel.cpp @@ -63,11 +63,11 @@ namespace monero { return node; } - bool MoneroTxWallet::getIsIncoming() const { + bool MoneroTxWallet::getIsOutgoing() const { return outgoingTransfer != boost::none; } - bool MoneroTxWallet::getIsOutgoing() const { + bool MoneroTxWallet::getIsIncoming() const { return !incomingTransfers.empty(); } @@ -153,8 +153,7 @@ namespace monero { // filter on outgoing if (isOutgoing != boost::none) { - if (*isOutgoing && !tx->getIsOutgoing()) return false; - if (!*isOutgoing && tx->getIsOutgoing()) return false; + if (isOutgoing.get() != tx->getIsOutgoing()) return false; } //cout << "6" << endl;