attempt to fix ChangeLabel to setaccount behavior.

This commit is contained in:
Christopher Jeffrey 2014-10-31 17:41:15 -07:00
parent 00ee6cc18c
commit a943cb888e
1 changed files with 18 additions and 3 deletions

View File

@ -4565,6 +4565,16 @@ NAN_METHOD(WalletChangeLabel) {
CAccount account; CAccount account;
walletdb.ReadAccount(accountName, account); walletdb.ReadAccount(accountName, account);
// setaccount logic:
// If address is mine - set account label
// If address is not mine - create recipient
// NOTE: This now throws an error if the address is not owned by you.
// if (coin.accountByAddress(address)) {
// coin.accountByAddress(address).label = label;
// } else {
// coin.createRecipient(address, label);
// }
if (accountName.empty()) { if (accountName.empty()) {
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) { BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) {
const CBitcoinAddress& address = item.first; const CBitcoinAddress& address = item.first;
@ -4574,6 +4584,11 @@ NAN_METHOD(WalletChangeLabel) {
break; break;
} }
} }
// If it isn't our address, create a recipient:
if (!IsMine(*pwalletMain, address.Get())) {
WalletSetRecipient(args);
NanReturnValue(True());
}
} }
// Find all addresses that have the given account // Find all addresses that have the given account
@ -4581,9 +4596,9 @@ NAN_METHOD(WalletChangeLabel) {
const CBitcoinAddress& address = item.first; const CBitcoinAddress& address = item.first;
const string& strName = item.second.name; const string& strName = item.second.name;
if (strName == accountName) { if (strName == accountName) {
walletdb.WriteName(address.ToString(), label); // walletdb.WriteName(address.ToString(), label);
walletdb.WritePurpose(address.ToString(), std::string("receive")); // walletdb.WritePurpose(address.ToString(), std::string("receive"));
// pwalletMain->SetAddressBook(address, accountName, std::string("receive")); pwalletMain->SetAddressBook(address, accountName, std::string("receive"));
} }
} }