mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-23 16:02:24 +00:00
wallet2_api: add an address book payment id lookup API
This commit is contained in:
parent
dd580d7bc7
commit
21c5af5a8a
3 changed files with 25 additions and 0 deletions
|
@ -103,6 +103,28 @@ bool AddressBookImpl::deleteRow(std::size_t rowId)
|
|||
return r;
|
||||
}
|
||||
|
||||
int AddressBookImpl::lookupPaymentID(const std::string &payment_id) const
|
||||
{
|
||||
// turn short ones into long ones for comparison
|
||||
const std::string long_payment_id = payment_id + std::string(64 - payment_id.size(), '0');
|
||||
|
||||
int idx = -1;
|
||||
for (const auto &row: m_rows) {
|
||||
++idx;
|
||||
// this does short/short and long/long
|
||||
if (payment_id == row->getPaymentId())
|
||||
return idx;
|
||||
// short/long
|
||||
if (long_payment_id == row->getPaymentId())
|
||||
return idx;
|
||||
// one case left: payment_id was long, row's is short
|
||||
const std::string long_row_payment_id = row->getPaymentId() + std::string(64 - row->getPaymentId().size(), '0');
|
||||
if (payment_id == long_row_payment_id)
|
||||
return idx;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void AddressBookImpl::clearRows() {
|
||||
for (auto r : m_rows) {
|
||||
delete r;
|
||||
|
|
|
@ -51,6 +51,8 @@ public:
|
|||
// Error codes. See AddressBook:ErrorCode enum in wallet2_api.h
|
||||
std::string errorString() const {return m_errorString;}
|
||||
int errorCode() const {return m_errorCode;}
|
||||
|
||||
int lookupPaymentID(const std::string &payment_id) const;
|
||||
|
||||
private:
|
||||
void clearRows();
|
||||
|
|
|
@ -175,6 +175,7 @@ struct AddressBook
|
|||
virtual void refresh() = 0;
|
||||
virtual std::string errorString() const = 0;
|
||||
virtual int errorCode() const = 0;
|
||||
virtual int lookupPaymentID(const std::string &payment_id) const = 0;
|
||||
};
|
||||
|
||||
struct WalletListener
|
||||
|
|
Loading…
Reference in a new issue