mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-30 14:53:27 +01:00
Merge pull request #2703
d0463312
fix libwallet api test after api change (Jaquee)a46c1eed
Wallet2: Don't throw when subaddress label doesn't exist (Jaquee)086b7db2
Wallet API: default values for account and subaddr index (Jaquee)
This commit is contained in:
commit
32b46c594b
@ -1044,8 +1044,7 @@ void WalletImpl::setSubaddressLabel(uint32_t accountIndex, uint32_t addressIndex
|
|||||||
// - confirmed_transfer_details)
|
// - confirmed_transfer_details)
|
||||||
|
|
||||||
PendingTransaction *WalletImpl::createTransaction(const string &dst_addr, const string &payment_id, optional<uint64_t> amount, uint32_t mixin_count,
|
PendingTransaction *WalletImpl::createTransaction(const string &dst_addr, const string &payment_id, optional<uint64_t> amount, uint32_t mixin_count,
|
||||||
uint32_t subaddr_account, std::set<uint32_t> subaddr_indices,
|
PendingTransaction::Priority priority, uint32_t subaddr_account, std::set<uint32_t> subaddr_indices)
|
||||||
PendingTransaction::Priority priority)
|
|
||||||
|
|
||||||
{
|
{
|
||||||
clearStatus();
|
clearStatus();
|
||||||
|
@ -73,7 +73,7 @@ public:
|
|||||||
int status() const;
|
int status() const;
|
||||||
std::string errorString() const;
|
std::string errorString() const;
|
||||||
bool setPassword(const std::string &password);
|
bool setPassword(const std::string &password);
|
||||||
std::string address(uint32_t accountIndex, uint32_t addressIndex) const;
|
std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const;
|
||||||
std::string integratedAddress(const std::string &payment_id) const;
|
std::string integratedAddress(const std::string &payment_id) const;
|
||||||
std::string secretViewKey() const;
|
std::string secretViewKey() const;
|
||||||
std::string publicViewKey() const;
|
std::string publicViewKey() const;
|
||||||
@ -88,8 +88,8 @@ public:
|
|||||||
ConnectionStatus connected() const;
|
ConnectionStatus connected() const;
|
||||||
void setTrustedDaemon(bool arg);
|
void setTrustedDaemon(bool arg);
|
||||||
bool trustedDaemon() const;
|
bool trustedDaemon() const;
|
||||||
uint64_t balance(uint32_t accountIndex) const;
|
uint64_t balance(uint32_t accountIndex = 0) const;
|
||||||
uint64_t unlockedBalance(uint32_t accountIndex) const;
|
uint64_t unlockedBalance(uint32_t accountIndex = 0) const;
|
||||||
uint64_t blockChainHeight() const;
|
uint64_t blockChainHeight() const;
|
||||||
uint64_t approximateBlockChainHeight() const;
|
uint64_t approximateBlockChainHeight() const;
|
||||||
uint64_t daemonBlockChainHeight() const;
|
uint64_t daemonBlockChainHeight() const;
|
||||||
@ -117,9 +117,9 @@ public:
|
|||||||
|
|
||||||
PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id,
|
PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id,
|
||||||
optional<uint64_t> amount, uint32_t mixin_count,
|
optional<uint64_t> amount, uint32_t mixin_count,
|
||||||
uint32_t subaddr_account,
|
PendingTransaction::Priority priority = PendingTransaction::Priority_Low,
|
||||||
std::set<uint32_t> subaddr_indices,
|
uint32_t subaddr_account = 0,
|
||||||
PendingTransaction::Priority priority = PendingTransaction::Priority_Low);
|
std::set<uint32_t> subaddr_indices = {});
|
||||||
virtual PendingTransaction * createSweepUnmixableTransaction();
|
virtual PendingTransaction * createSweepUnmixableTransaction();
|
||||||
bool submitTransaction(const std::string &fileName);
|
bool submitTransaction(const std::string &fileName);
|
||||||
virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename);
|
virtual UnsignedTransaction * loadUnsignedTx(const std::string &unsigned_filename);
|
||||||
|
@ -692,19 +692,19 @@ void wallet2::expand_subaddresses(const cryptonote::subaddress_index& index)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
std::string wallet2::get_subaddress_label(const cryptonote::subaddress_index& index) const
|
std::string wallet2::get_subaddress_label(const cryptonote::subaddress_index& index) const
|
||||||
{
|
{
|
||||||
if (index.major >= m_subaddress_labels.size())
|
if (index.major >= m_subaddress_labels.size() || index.minor >= m_subaddress_labels[index.major].size())
|
||||||
throw std::runtime_error("index.major is out of bound");
|
{
|
||||||
if (index.minor >= m_subaddress_labels[index.major].size())
|
MERROR("Subaddress label doesn't exist");
|
||||||
throw std::runtime_error("index.minor is out of bound");
|
return "";
|
||||||
|
}
|
||||||
return m_subaddress_labels[index.major][index.minor];
|
return m_subaddress_labels[index.major][index.minor];
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
void wallet2::set_subaddress_label(const cryptonote::subaddress_index& index, const std::string &label)
|
void wallet2::set_subaddress_label(const cryptonote::subaddress_index& index, const std::string &label)
|
||||||
{
|
{
|
||||||
if (index.major >= m_subaddress_labels.size())
|
if (index.major >= m_subaddress_labels.size() || index.minor >= m_subaddress_labels[index.major].size())
|
||||||
throw std::runtime_error("index.major is out of bound");
|
MERROR("Subaddress index is out of bounds. Failed to set subaddress label.");
|
||||||
if (index.minor >= m_subaddress_labels[index.major].size())
|
else
|
||||||
throw std::runtime_error("index.minor is out of bound");
|
|
||||||
m_subaddress_labels[index.major][index.minor] = label;
|
m_subaddress_labels[index.major][index.minor] = label;
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
|
@ -467,8 +467,8 @@ namespace tools
|
|||||||
size_t get_num_subaddresses(uint32_t index_major) const { return index_major < m_subaddress_labels.size() ? m_subaddress_labels[index_major].size() : 0; }
|
size_t get_num_subaddresses(uint32_t index_major) const { return index_major < m_subaddress_labels.size() ? m_subaddress_labels[index_major].size() : 0; }
|
||||||
void add_subaddress(uint32_t index_major, const std::string& label); // throws when index is out of bound
|
void add_subaddress(uint32_t index_major, const std::string& label); // throws when index is out of bound
|
||||||
void expand_subaddresses(const cryptonote::subaddress_index& index);
|
void expand_subaddresses(const cryptonote::subaddress_index& index);
|
||||||
std::string get_subaddress_label(const cryptonote::subaddress_index& index) const; // throws when index is out of bound
|
std::string get_subaddress_label(const cryptonote::subaddress_index& index) const;
|
||||||
void set_subaddress_label(const cryptonote::subaddress_index &index, const std::string &label); // throws when index is out of bound
|
void set_subaddress_label(const cryptonote::subaddress_index &index, const std::string &label);
|
||||||
/*!
|
/*!
|
||||||
* \brief Tells if the wallet file is deprecated.
|
* \brief Tells if the wallet file is deprecated.
|
||||||
*/
|
*/
|
||||||
|
@ -360,7 +360,7 @@ struct Wallet
|
|||||||
//! in case error status, returns error string
|
//! in case error status, returns error string
|
||||||
virtual std::string errorString() const = 0;
|
virtual std::string errorString() const = 0;
|
||||||
virtual bool setPassword(const std::string &password) = 0;
|
virtual bool setPassword(const std::string &password) = 0;
|
||||||
virtual std::string address(uint32_t accountIndex, uint32_t addressIndex) const = 0;
|
virtual std::string address(uint32_t accountIndex = 0, uint32_t addressIndex = 0) const = 0;
|
||||||
std::string mainAddress() const { return address(0, 0); }
|
std::string mainAddress() const { return address(0, 0); }
|
||||||
virtual std::string path() const = 0;
|
virtual std::string path() const = 0;
|
||||||
virtual bool testnet() const = 0;
|
virtual bool testnet() const = 0;
|
||||||
@ -476,14 +476,14 @@ struct Wallet
|
|||||||
virtual ConnectionStatus connected() const = 0;
|
virtual ConnectionStatus connected() const = 0;
|
||||||
virtual void setTrustedDaemon(bool arg) = 0;
|
virtual void setTrustedDaemon(bool arg) = 0;
|
||||||
virtual bool trustedDaemon() const = 0;
|
virtual bool trustedDaemon() const = 0;
|
||||||
virtual uint64_t balance(uint32_t accountIndex) const = 0;
|
virtual uint64_t balance(uint32_t accountIndex = 0) const = 0;
|
||||||
uint64_t balanceAll() const {
|
uint64_t balanceAll() const {
|
||||||
uint64_t result = 0;
|
uint64_t result = 0;
|
||||||
for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
|
for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
|
||||||
result += balance(i);
|
result += balance(i);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
virtual uint64_t unlockedBalance(uint32_t accountIndex) const = 0;
|
virtual uint64_t unlockedBalance(uint32_t accountIndex = 0) const = 0;
|
||||||
uint64_t unlockedBalanceAll() const {
|
uint64_t unlockedBalanceAll() const {
|
||||||
uint64_t result = 0;
|
uint64_t result = 0;
|
||||||
for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
|
for (uint32_t i = 0; i < numSubaddressAccounts(); ++i)
|
||||||
@ -623,9 +623,9 @@ struct Wallet
|
|||||||
|
|
||||||
virtual PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id,
|
virtual PendingTransaction * createTransaction(const std::string &dst_addr, const std::string &payment_id,
|
||||||
optional<uint64_t> amount, uint32_t mixin_count,
|
optional<uint64_t> amount, uint32_t mixin_count,
|
||||||
uint32_t subaddr_account,
|
PendingTransaction::Priority = PendingTransaction::Priority_Low,
|
||||||
std::set<uint32_t> subaddr_indices,
|
uint32_t subaddr_account = 0,
|
||||||
PendingTransaction::Priority = PendingTransaction::Priority_Low) = 0;
|
std::set<uint32_t> subaddr_indices = {}) = 0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief createSweepUnmixableTransaction creates transaction with unmixable outputs.
|
* \brief createSweepUnmixableTransaction creates transaction with unmixable outputs.
|
||||||
|
@ -580,9 +580,9 @@ TEST_F(WalletTest1, WalletTransaction)
|
|||||||
PAYMENT_ID_EMPTY,
|
PAYMENT_ID_EMPTY,
|
||||||
AMOUNT_10XMR,
|
AMOUNT_10XMR,
|
||||||
MIXIN_COUNT,
|
MIXIN_COUNT,
|
||||||
|
Monero::PendingTransaction::Priority_Medium,
|
||||||
0,
|
0,
|
||||||
std::set<uint32_t>{},
|
std::set<uint32_t>{});
|
||||||
Monero::PendingTransaction::Priority_Medium);
|
|
||||||
ASSERT_TRUE(transaction->status() == Monero::PendingTransaction::Status_Ok);
|
ASSERT_TRUE(transaction->status() == Monero::PendingTransaction::Status_Ok);
|
||||||
wallet1->refresh();
|
wallet1->refresh();
|
||||||
|
|
||||||
@ -621,7 +621,7 @@ TEST_F(WalletTest1, WalletTransactionWithMixin)
|
|||||||
std::cerr << "Transaction mixin count: " << mixin << std::endl;
|
std::cerr << "Transaction mixin count: " << mixin << std::endl;
|
||||||
|
|
||||||
Monero::PendingTransaction * transaction = wallet1->createTransaction(
|
Monero::PendingTransaction * transaction = wallet1->createTransaction(
|
||||||
recepient_address, payment_id, AMOUNT_5XMR, mixin, 0, std::set<uint32_t>{});
|
recepient_address, payment_id, AMOUNT_5XMR, mixin, Monero::PendingTransaction::Priority_Medium, 0, std::set<uint32_t>{});
|
||||||
|
|
||||||
std::cerr << "Transaction status: " << transaction->status() << std::endl;
|
std::cerr << "Transaction status: " << transaction->status() << std::endl;
|
||||||
std::cerr << "Transaction fee: " << Monero::Wallet::displayAmount(transaction->fee()) << std::endl;
|
std::cerr << "Transaction fee: " << Monero::Wallet::displayAmount(transaction->fee()) << std::endl;
|
||||||
@ -663,7 +663,7 @@ TEST_F(WalletTest1, WalletTransactionWithPriority)
|
|||||||
std::cerr << "Transaction priority: " << *it << std::endl;
|
std::cerr << "Transaction priority: " << *it << std::endl;
|
||||||
|
|
||||||
Monero::PendingTransaction * transaction = wallet1->createTransaction(
|
Monero::PendingTransaction * transaction = wallet1->createTransaction(
|
||||||
recepient_address, payment_id, AMOUNT_5XMR, mixin, 0, std::set<uint32_t>{}, *it);
|
recepient_address, payment_id, AMOUNT_5XMR, mixin, *it, 0, std::set<uint32_t>{});
|
||||||
std::cerr << "Transaction status: " << transaction->status() << std::endl;
|
std::cerr << "Transaction status: " << transaction->status() << std::endl;
|
||||||
std::cerr << "Transaction fee: " << Monero::Wallet::displayAmount(transaction->fee()) << std::endl;
|
std::cerr << "Transaction fee: " << Monero::Wallet::displayAmount(transaction->fee()) << std::endl;
|
||||||
std::cerr << "Transaction error: " << transaction->errorString() << std::endl;
|
std::cerr << "Transaction error: " << transaction->errorString() << std::endl;
|
||||||
@ -719,7 +719,7 @@ TEST_F(WalletTest1, WalletTransactionAndHistory)
|
|||||||
|
|
||||||
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet4_addr,
|
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet4_addr,
|
||||||
PAYMENT_ID_EMPTY,
|
PAYMENT_ID_EMPTY,
|
||||||
AMOUNT_10XMR * 5, 1, 0, std::set<uint32_t>{});
|
AMOUNT_10XMR * 5, 1, Monero::PendingTransaction::Priority_Medium, 0, std::set<uint32_t>{});
|
||||||
|
|
||||||
ASSERT_TRUE(tx->status() == Monero::PendingTransaction::Status_Ok);
|
ASSERT_TRUE(tx->status() == Monero::PendingTransaction::Status_Ok);
|
||||||
ASSERT_TRUE(tx->commit());
|
ASSERT_TRUE(tx->commit());
|
||||||
@ -761,7 +761,7 @@ TEST_F(WalletTest1, WalletTransactionWithPaymentId)
|
|||||||
|
|
||||||
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet4_addr,
|
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet4_addr,
|
||||||
payment_id,
|
payment_id,
|
||||||
AMOUNT_1XMR, 1, 0, std::set<uint32_t>{});
|
AMOUNT_1XMR, 1, Monero::PendingTransaction::Priority_Medium, 0, std::set<uint32_t>{});
|
||||||
|
|
||||||
ASSERT_TRUE(tx->status() == Monero::PendingTransaction::Status_Ok);
|
ASSERT_TRUE(tx->status() == Monero::PendingTransaction::Status_Ok);
|
||||||
ASSERT_TRUE(tx->commit());
|
ASSERT_TRUE(tx->commit());
|
||||||
@ -934,7 +934,7 @@ TEST_F(WalletTest2, WalletCallbackSent)
|
|||||||
|
|
||||||
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet_dst->mainAddress(),
|
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet_dst->mainAddress(),
|
||||||
PAYMENT_ID_EMPTY,
|
PAYMENT_ID_EMPTY,
|
||||||
amount, 1, 0, std::set<uint32_t>{});
|
amount, 1, Monero::PendingTransaction::Priority_Medium, 0, std::set<uint32_t>{});
|
||||||
std::cout << "** Committing transaction: " << Monero::Wallet::displayAmount(tx->amount())
|
std::cout << "** Committing transaction: " << Monero::Wallet::displayAmount(tx->amount())
|
||||||
<< " with fee: " << Monero::Wallet::displayAmount(tx->fee());
|
<< " with fee: " << Monero::Wallet::displayAmount(tx->fee());
|
||||||
|
|
||||||
@ -975,7 +975,7 @@ TEST_F(WalletTest2, WalletCallbackReceived)
|
|||||||
std::cout << "** Sending " << Monero::Wallet::displayAmount(amount) << " to " << wallet_dst->mainAddress();
|
std::cout << "** Sending " << Monero::Wallet::displayAmount(amount) << " to " << wallet_dst->mainAddress();
|
||||||
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet_dst->mainAddress(),
|
Monero::PendingTransaction * tx = wallet_src->createTransaction(wallet_dst->mainAddress(),
|
||||||
PAYMENT_ID_EMPTY,
|
PAYMENT_ID_EMPTY,
|
||||||
amount, 1, 0, std::set<uint32_t>{});
|
amount, 1, Monero::PendingTransaction::Priority_Medium, 0, std::set<uint32_t>{});
|
||||||
|
|
||||||
std::cout << "** Committing transaction: " << Monero::Wallet::displayAmount(tx->amount())
|
std::cout << "** Committing transaction: " << Monero::Wallet::displayAmount(tx->amount())
|
||||||
<< " with fee: " << Monero::Wallet::displayAmount(tx->fee());
|
<< " with fee: " << Monero::Wallet::displayAmount(tx->fee());
|
||||||
|
Loading…
Reference in New Issue
Block a user