diff options
| author | selsta <selsta@sent.at> | 2022-05-26 03:43:54 +0200 |
|---|---|---|
| committer | selsta <selsta@sent.at> | 2022-05-26 03:51:31 +0200 |
| commit | de2f0d010252ad1abf0f0c8ca9e32d81817c80ab (patch) | |
| tree | 088303615df316fe9d75778546eaf50f62bdd867 /src/wallet/api/wallet.cpp | |
| parent | 97271b7d20d82695bce84495f59f76aafe4e04f3 (diff) | |
| download | monzero-core-de2f0d010252ad1abf0f0c8ca9e32d81817c80ab.tar.gz monzero-core-de2f0d010252ad1abf0f0c8ca9e32d81817c80ab.tar.xz monzero-core-de2f0d010252ad1abf0f0c8ca9e32d81817c80ab.zip | |
wallet_api: add scanTransactions function
Diffstat (limited to 'src/wallet/api/wallet.cpp')
| -rw-r--r-- | src/wallet/api/wallet.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp index 7cd8656e1..260caa551 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp @@ -1280,6 +1280,42 @@ bool WalletImpl::importOutputs(const string &filename) return true; } +bool WalletImpl::scanTransactions(const std::vector<std::string> &txids) +{ + if (txids.empty()) + { + setStatusError(string(tr("Failed to scan transactions: no transaction ids provided."))); + return false; + } + + // Parse and dedup args + std::unordered_set<crypto::hash> txids_u; + for (const auto &s : txids) + { + crypto::hash txid; + if (!epee::string_tools::hex_to_pod(s, txid)) + { + setStatusError(string(tr("Invalid txid specified: ")) + s); + return false; + } + txids_u.insert(txid); + } + std::vector<crypto::hash> txids_v(txids_u.begin(), txids_u.end()); + + try + { + m_wallet->scan_tx(txids_v); + } + catch (const std::exception &e) + { + LOG_ERROR("Failed to scan transaction: " << e.what()); + setStatusError(string(tr("Failed to scan transaction: ")) + e.what()); + return false; + } + + return true; +} + void WalletImpl::addSubaddressAccount(const std::string& label) { m_wallet->add_subaddress_account(label); |
