implement change label and delete account.
This commit is contained in:
parent
b40e5a15ea
commit
f5b3d45b5c
|
@ -771,6 +771,14 @@ Wallet.prototype.import = function(options, callback) {
|
||||||
return bitcoindjs.walletImportWallet(options || {}, callback);
|
return bitcoindjs.walletImportWallet(options || {}, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.changeLabel = function(options) {
|
||||||
|
return bitcoindjs.walletChangeLabel(options || {});
|
||||||
|
};
|
||||||
|
|
||||||
|
Wallet.prototype.deleteAccount = function(options) {
|
||||||
|
return bitcoindjs.walletDeleteAccount(options || {});
|
||||||
|
};
|
||||||
|
|
||||||
Wallet = new Wallet;
|
Wallet = new Wallet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -204,6 +204,8 @@ NAN_METHOD(WalletSetTxFee);
|
||||||
NAN_METHOD(WalletImportKey);
|
NAN_METHOD(WalletImportKey);
|
||||||
NAN_METHOD(WalletDumpWallet);
|
NAN_METHOD(WalletDumpWallet);
|
||||||
NAN_METHOD(WalletImportWallet);
|
NAN_METHOD(WalletImportWallet);
|
||||||
|
NAN_METHOD(WalletChangeLabel);
|
||||||
|
NAN_METHOD(WalletDeleteAccount);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Node.js Internal Function Templates
|
* Node.js Internal Function Templates
|
||||||
|
@ -4036,6 +4038,126 @@ async_import_wallet_after(uv_work_t *req) {
|
||||||
delete req;
|
delete req;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WalletChangeLabel()
|
||||||
|
* bitcoindjs.walletChangeLabel(options)
|
||||||
|
* Change account label
|
||||||
|
*/
|
||||||
|
|
||||||
|
NAN_METHOD(WalletChangeLabel) {
|
||||||
|
NanScope();
|
||||||
|
|
||||||
|
if (args.Length() < 1 || !args[0]->IsObject()) {
|
||||||
|
return NanThrowError(
|
||||||
|
"Usage: bitcoindjs.walletChangeLabel(options)");
|
||||||
|
}
|
||||||
|
|
||||||
|
Local<Object> options = Local<Object>::Cast(args[0]);
|
||||||
|
|
||||||
|
std::string accountName = std::string("");
|
||||||
|
if (options->Get(NanNew<String>("account"))->IsString()) {
|
||||||
|
String::Utf8Value accountName_(options->Get(NanNew<String>("account"))->ToString());
|
||||||
|
accountName = std::string(*accountName_);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string addr = std::string("");
|
||||||
|
if (options->Get(NanNew<String>("address"))->IsString()) {
|
||||||
|
String::Utf8Value addr_(options->Get(NanNew<String>("address"))->ToString());
|
||||||
|
addr = std::string(*addr_);
|
||||||
|
}
|
||||||
|
|
||||||
|
String::Utf8Value label_(options->Get(NanNew<String>("label"))->ToString());
|
||||||
|
std::string label = std::string(*label_);
|
||||||
|
|
||||||
|
// LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
|
||||||
|
CWalletDB walletdb(pwalletMain->strWalletFile);
|
||||||
|
|
||||||
|
CAccount account;
|
||||||
|
walletdb.ReadAccount(accountName, account);
|
||||||
|
|
||||||
|
if (accountName.empty()) {
|
||||||
|
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) {
|
||||||
|
const CBitcoinAddress& address = item.first;
|
||||||
|
const string& strName = item.second.name;
|
||||||
|
if (address.ToString() == addr) {
|
||||||
|
accountName = strName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find all addresses that have the given account
|
||||||
|
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) {
|
||||||
|
const CBitcoinAddress& address = item.first;
|
||||||
|
const string& strName = item.second.name;
|
||||||
|
if (strName == accountName) {
|
||||||
|
walletdb.WriteName(address.ToString(), label);
|
||||||
|
walletdb.WritePurpose(address.ToString(), std::string("receive"));
|
||||||
|
// pwalletMain->SetAddressBook(address, accountName, std::string("receive"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NanReturnValue(True());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WalletDeleteAccount()
|
||||||
|
* bitcoindjs.walletDeleteAccount(options)
|
||||||
|
* Delete account and all associated addresses
|
||||||
|
*/
|
||||||
|
|
||||||
|
NAN_METHOD(WalletDeleteAccount) {
|
||||||
|
NanScope();
|
||||||
|
|
||||||
|
if (args.Length() < 1 || !args[0]->IsObject()) {
|
||||||
|
return NanThrowError(
|
||||||
|
"Usage: bitcoindjs.walletDeleteAccount(options)");
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string accountName = std::string("");
|
||||||
|
if (options->Get(NanNew<String>("account"))->IsString()) {
|
||||||
|
String::Utf8Value accountName_(options->Get(NanNew<String>("account"))->ToString());
|
||||||
|
accountName = std::string(*accountName_);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string addr = std::string("");
|
||||||
|
if (options->Get(NanNew<String>("address"))->IsString()) {
|
||||||
|
String::Utf8Value addr_(options->Get(NanNew<String>("address"))->ToString());
|
||||||
|
addr = std::string(*addr_);
|
||||||
|
}
|
||||||
|
|
||||||
|
// LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
|
||||||
|
CWalletDB walletdb(pwalletMain->strWalletFile);
|
||||||
|
|
||||||
|
CAccount account;
|
||||||
|
walletdb.ReadAccount(accountName, account);
|
||||||
|
|
||||||
|
if (accountName.empty()) {
|
||||||
|
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) {
|
||||||
|
const CBitcoinAddress& address = item.first;
|
||||||
|
const string& strName = item.second.name;
|
||||||
|
if (address.ToString() == addr) {
|
||||||
|
accountName = strName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find all addresses that have the given account
|
||||||
|
BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, CAddressBookData)& item, pwalletMain->mapAddressBook) {
|
||||||
|
const CBitcoinAddress& address = item.first;
|
||||||
|
const string& strName = item.second.name;
|
||||||
|
if (strName == accountName) {
|
||||||
|
walletdb.EraseName(address.ToString());
|
||||||
|
walletdb.ErasePurpose(address.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NanReturnValue(True());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Conversions
|
* Conversions
|
||||||
* cblock_to_jsblock(cblock, cblock_index, jsblock, is_new)
|
* cblock_to_jsblock(cblock, cblock_index, jsblock, is_new)
|
||||||
|
@ -4425,6 +4547,8 @@ init(Handle<Object> target) {
|
||||||
NODE_SET_METHOD(target, "walletImportKey", WalletImportKey);
|
NODE_SET_METHOD(target, "walletImportKey", WalletImportKey);
|
||||||
NODE_SET_METHOD(target, "walletDumpWallet", WalletDumpWallet);
|
NODE_SET_METHOD(target, "walletDumpWallet", WalletDumpWallet);
|
||||||
NODE_SET_METHOD(target, "walletImportWallet", WalletImportWallet);
|
NODE_SET_METHOD(target, "walletImportWallet", WalletImportWallet);
|
||||||
|
NODE_SET_METHOD(target, "walletChangeLabel", WalletChangeLabel);
|
||||||
|
NODE_SET_METHOD(target, "walletDeleteAccount", WalletDeleteAccount);
|
||||||
}
|
}
|
||||||
|
|
||||||
NODE_MODULE(bitcoindjs, init)
|
NODE_MODULE(bitcoindjs, init)
|
||||||
|
|
Loading…
Reference in New Issue