Skip to content

Commit c5b2770

Browse files
committed
Add purpose arg to Wallet::getAddress
Also make all arguments to getAddress required and document args at call sites.
1 parent a785bc3 commit c5b2770

File tree

5 files changed

+22
-10
lines changed

5 files changed

+22
-10
lines changed

src/interfaces/wallet.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,10 @@ class WalletImpl : public Wallet
152152
{
153153
return m_wallet.DelAddressBook(dest);
154154
}
155-
bool getAddress(const CTxDestination& dest, std::string* name, isminetype* is_mine) override
155+
bool getAddress(const CTxDestination& dest,
156+
std::string* name,
157+
isminetype* is_mine,
158+
std::string* purpose) override
156159
{
157160
LOCK(m_wallet.cs_wallet);
158161
auto it = m_wallet.mapAddressBook.find(dest);
@@ -165,6 +168,9 @@ class WalletImpl : public Wallet
165168
if (is_mine) {
166169
*is_mine = IsMine(m_wallet, dest);
167170
}
171+
if (purpose) {
172+
*purpose = it->second.purpose;
173+
}
168174
return true;
169175
}
170176
std::vector<WalletAddress> getAddresses() override

src/interfaces/wallet.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,9 @@ class Wallet
9999

100100
//! Look up address in wallet, return whether exists.
101101
virtual bool getAddress(const CTxDestination& dest,
102-
std::string* name = nullptr,
103-
isminetype* is_mine = nullptr) = 0;
102+
std::string* name,
103+
isminetype* is_mine,
104+
std::string* purpose) = 0;
104105

105106
//! Get wallet address list.
106107
virtual std::vector<WalletAddress> getAddresses() = 0;

src/qt/addresstablemodel.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,8 @@ bool AddressTableModel::setData(const QModelIndex &index, const QVariant &value,
266266
}
267267
// Check for duplicate addresses to prevent accidental deletion of addresses, if you try
268268
// to paste an existing address over another address (with a different label)
269-
if (walletModel->wallet().getAddress(newAddress))
269+
if (walletModel->wallet().getAddress(
270+
newAddress, /* name= */ nullptr, /* is_mine= */ nullptr, /* purpose= */ nullptr))
270271
{
271272
editStatus = DUPLICATE_ADDRESS;
272273
return false;
@@ -351,7 +352,8 @@ QString AddressTableModel::addRow(const QString &type, const QString &label, con
351352
}
352353
// Check for duplicate addresses
353354
{
354-
if(walletModel->wallet().getAddress(DecodeDestination(strAddress)))
355+
if (walletModel->wallet().getAddress(
356+
DecodeDestination(strAddress), /* name= */ nullptr, /* is_mine= */ nullptr, /* purpose= */ nullptr))
355357
{
356358
editStatus = DUPLICATE_ADDRESS;
357359
return QString();

src/qt/transactiondesc.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ QString TransactionDesc::toHTML(interfaces::Node& node, interfaces::Wallet& wall
102102
if (IsValidDestination(address)) {
103103
std::string name;
104104
isminetype ismine;
105-
if (wallet.getAddress(address, &name, &ismine))
105+
if (wallet.getAddress(address, &name, &ismine, /* purpose= */ nullptr))
106106
{
107107
strHTML += "<b>" + tr("From") + ":</b> " + tr("unknown") + "<br>";
108108
strHTML += "<b>" + tr("To") + ":</b> ";
@@ -128,7 +128,8 @@ QString TransactionDesc::toHTML(interfaces::Node& node, interfaces::Wallet& wall
128128
strHTML += "<b>" + tr("To") + ":</b> ";
129129
CTxDestination dest = DecodeDestination(strAddress);
130130
std::string name;
131-
if (wallet.getAddress(dest, &name) && !name.empty())
131+
if (wallet.getAddress(
132+
dest, &name, /* is_mine= */ nullptr, /* purpose= */ nullptr) && !name.empty())
132133
strHTML += GUIUtil::HtmlEscape(name) + " ";
133134
strHTML += GUIUtil::HtmlEscape(strAddress) + "<br>";
134135
}
@@ -196,7 +197,8 @@ QString TransactionDesc::toHTML(interfaces::Node& node, interfaces::Wallet& wall
196197
{
197198
strHTML += "<b>" + tr("To") + ":</b> ";
198199
std::string name;
199-
if (wallet.getAddress(address, &name) && !name.empty())
200+
if (wallet.getAddress(
201+
address, &name, /* is_mine= */ nullptr, /* purpose= */ nullptr) && !name.empty())
200202
strHTML += GUIUtil::HtmlEscape(name) + " ";
201203
strHTML += GUIUtil::HtmlEscape(EncodeDestination(address));
202204
if(toSelf == ISMINE_SPENDABLE)
@@ -319,7 +321,7 @@ QString TransactionDesc::toHTML(interfaces::Node& node, interfaces::Wallet& wall
319321
if (ExtractDestination(vout.scriptPubKey, address))
320322
{
321323
std::string name;
322-
if (wallet.getAddress(address, &name) && !name.empty())
324+
if (wallet.getAddress(address, &name, /* is_mine= */ nullptr, /* purpose= */ nullptr) && !name.empty())
323325
strHTML += GUIUtil::HtmlEscape(name) + " ";
324326
strHTML += QString::fromStdString(EncodeDestination(address));
325327
}

src/qt/walletmodel.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@ WalletModel::SendCoinsReturn WalletModel::sendCoins(WalletModelTransaction &tran
274274
{
275275
// Check if we have a new address or an updated label
276276
std::string name;
277-
if (!m_wallet->getAddress(dest, &name))
277+
if (!m_wallet->getAddress(
278+
dest, &name, /* is_mine= */ nullptr, /* purpose= */ nullptr))
278279
{
279280
m_wallet->setAddressBook(dest, strLabel, "send");
280281
}

0 commit comments

Comments
 (0)