From 7caef26a65e52d4ed1b74c70b088029a345d130f Mon Sep 17 00:00:00 2001 From: woodser Date: Fri, 31 May 2019 17:37:02 -0400 Subject: [PATCH] ready to implement subaddress index filter in getSubaddressAux() --- src/wallet/MoneroWallet.cpp | 20 +++++++++++++------- src/wallet/MoneroWallet.h | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index e03d92b..fa41941 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -281,7 +281,7 @@ namespace monero { account.primaryAddress = getAddress(0, 0); account.balance = wallet2->balance(accountIdx); account.unlockedBalance = wallet2->unlocked_balance(accountIdx); - if (includeSubaddresses) account.subaddresses = getSubaddressesAux(accountIdx, transfers); + if (includeSubaddresses) account.subaddresses = getSubaddressesAux(accountIdx, vector(), transfers); accounts.push_back(account); } @@ -303,13 +303,23 @@ namespace monero { vector MoneroWallet::getSubaddresses(const uint32_t accountIdx) const { vector transfers; wallet2->get_transfers(transfers); - return getSubaddressesAux(accountIdx, transfers); + return getSubaddressesAux(accountIdx, vector(), transfers); + } + + vector MoneroWallet::getSubaddresses(const uint32_t accountIdx, const vector subaddressIndices) const { + cout << "getSubaddresses(" << accountIdx << ", " << subaddressIndices.size() << ")" << endl; + vector transfers; + wallet2->get_transfers(transfers); + return getSubaddressesAux(accountIdx, subaddressIndices, transfers); } // private helper to initialize subaddresses using transfer details - vector MoneroWallet::getSubaddressesAux(const uint32_t accountIdx, vector transfers) const { + vector MoneroWallet::getSubaddressesAux(const uint32_t accountIdx, vector subaddressIndices, vector transfers) const { vector subaddresses; + // TODO implement + if (!subaddressIndices.empty()) throw runtime_error("getting by subaddress index not yet supported"); + // get balances per subaddress as maps map balancePerSubaddress = wallet2->balance_per_subaddress(accountIdx); map> unlockedBalancePerSubaddress = wallet2->unlocked_balance_per_subaddress(accountIdx); @@ -333,10 +343,6 @@ namespace monero { return subaddresses; } - vector MoneroWallet::getSubaddresses(const uint32_t accountIdx, const vector subaddressIndices) const { - throw runtime_error("Not implemented"); - } - MoneroSubaddress MoneroWallet::getSubaddress(const uint32_t accountIdx, const uint32_t subaddressIdx) const { throw runtime_error("Not implemented"); } diff --git a/src/wallet/MoneroWallet.h b/src/wallet/MoneroWallet.h index 57ef81b..62c3fb4 100644 --- a/src/wallet/MoneroWallet.h +++ b/src/wallet/MoneroWallet.h @@ -1111,6 +1111,6 @@ namespace monero { MoneroWalletListener* listener; // wallet's external listener MoneroSyncResult syncAux(uint64_t* startHeight, uint64_t* endHeight, MoneroSyncListener* listener); - vector getSubaddressesAux(uint32_t accountIdx, vector transfers) const; + vector getSubaddressesAux(uint32_t accountIdx, vector subaddressIndices, vector transfers) const; }; }