wallet2_api: add an address book payment id lookup API

This commit is contained in:
moneromooo-monero 2017-01-01 16:06:34 +00:00
parent dd580d7bc7
commit 21c5af5a8a
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
3 changed files with 25 additions and 0 deletions

View file

@ -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;

View file

@ -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();

View file

@ -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