diff options
Diffstat (limited to 'patches/wownero/0005-coin-control.patch')
| -rw-r--r-- | patches/wownero/0005-coin-control.patch | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/patches/wownero/0005-coin-control.patch b/patches/wownero/0005-coin-control.patch deleted file mode 100644 index 4502af5..0000000 --- a/patches/wownero/0005-coin-control.patch +++ /dev/null @@ -1,225 +0,0 @@ -From 820424507f43711e5e6b31a68dfda7e430cdae9d Mon Sep 17 00:00:00 2001 -From: tobtoht <tob@featherwallet.org> -Date: Wed, 27 Mar 2024 16:31:36 +0100 -Subject: [PATCH 05/14] coin control - ---- - src/wallet/api/coins.cpp | 62 ++++++++++++++++++++++++++++++++++++ - src/wallet/api/coins.h | 4 +++ - src/wallet/api/wallet.cpp | 4 +-- - src/wallet/api/wallet2_api.h | 3 ++ - src/wallet/wallet2.cpp | 22 +++++++++++++ - src/wallet/wallet2.h | 4 +++ - 6 files changed, 97 insertions(+), 2 deletions(-) - -diff --git a/src/wallet/api/coins.cpp b/src/wallet/api/coins.cpp -index fe54b82cf..5ce69b5b9 100644 ---- a/src/wallet/api/coins.cpp -+++ b/src/wallet/api/coins.cpp -@@ -90,6 +90,26 @@ namespace Monero { - } - } - -+ void CoinsImpl::setFrozen(std::string public_key) -+ { -+ crypto::public_key pk; -+ if (!epee::string_tools::hex_to_pod(public_key, pk)) -+ { -+ LOG_ERROR("Invalid public key: " << public_key); -+ return; -+ } -+ -+ try -+ { -+ m_wallet->m_wallet->freeze(pk); -+ refresh(); -+ } -+ catch (const std::exception& e) -+ { -+ LOG_ERROR("setFrozen: " << e.what()); -+ } -+ } -+ - void CoinsImpl::setFrozen(int index) - { - try -@@ -103,6 +123,26 @@ namespace Monero { - } - } - -+ void CoinsImpl::thaw(std::string public_key) -+ { -+ crypto::public_key pk; -+ if (!epee::string_tools::hex_to_pod(public_key, pk)) -+ { -+ LOG_ERROR("Invalid public key: " << public_key); -+ return; -+ } -+ -+ try -+ { -+ m_wallet->m_wallet->thaw(pk); -+ refresh(); -+ } -+ catch (const std::exception& e) -+ { -+ LOG_ERROR("thaw: " << e.what()); -+ } -+ } -+ - void CoinsImpl::thaw(int index) - { - try -@@ -120,4 +160,26 @@ namespace Monero { - return m_wallet->m_wallet->is_transfer_unlocked(unlockTime, blockHeight); - } - -+ void CoinsImpl::setDescription(const std::string &public_key, const std::string &description) -+ { -+ crypto::public_key pk; -+ if (!epee::string_tools::hex_to_pod(public_key, pk)) -+ { -+ LOG_ERROR("Invalid public key: " << public_key); -+ return; -+ } -+ -+ try -+ { -+ const size_t index = m_wallet->m_wallet->get_transfer_details(pk); -+ const tools::wallet2::transfer_details &td = m_wallet->m_wallet->get_transfer_details(index); -+ m_wallet->m_wallet->set_tx_note(td.m_txid, description); -+ refresh(); -+ } -+ catch (const std::exception& e) -+ { -+ LOG_ERROR("setDescription: " << e.what()); -+ } -+ } -+ - } // namespace -diff --git a/src/wallet/api/coins.h b/src/wallet/api/coins.h -index 3293d8ae9..bcd8b517f 100644 ---- a/src/wallet/api/coins.h -+++ b/src/wallet/api/coins.h -@@ -18,11 +18,15 @@ namespace Monero { - std::vector<CoinsInfo*> getAll() const override; - void refresh() override; - -+ void setFrozen(std::string public_key) override; - void setFrozen(int index) override; -+ void thaw(std::string public_key) override; - void thaw(int index) override; - - bool isTransferUnlocked(uint64_t unlockTime, uint64_t blockHeight) override; - -+ void setDescription(const std::string &public_key, const std::string &description) override; -+ - private: - WalletImpl *m_wallet; - std::vector<CoinsInfo*> m_rows; -diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp -index 4b2693f23..ed309de34 100644 ---- a/src/wallet/api/wallet.cpp -+++ b/src/wallet/api/wallet.cpp -@@ -2018,11 +2018,11 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri - if (amount) { - transaction->m_pending_tx = m_wallet->create_transactions_2(dsts, fake_outs_count, 0 /* unlock_time */, - adjusted_priority, -- extra, subaddr_account, subaddr_indices); -+ extra, subaddr_account, subaddr_indices, {}, preferred_input_list); - } else { - transaction->m_pending_tx = m_wallet->create_transactions_all(0, info.address, info.is_subaddress, 1, fake_outs_count, 0 /* unlock_time */, - adjusted_priority, -- extra, subaddr_account, subaddr_indices); -+ extra, subaddr_account, subaddr_indices, preferred_input_list); - } - pendingTxPostProcess(transaction); - -diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h -index 5dcaeaaab..347e6d002 100644 ---- a/src/wallet/api/wallet2_api.h -+++ b/src/wallet/api/wallet2_api.h -@@ -352,9 +352,12 @@ struct Coins - virtual CoinsInfo * coin(int index) const = 0; - virtual std::vector<CoinsInfo*> getAll() const = 0; - virtual void refresh() = 0; -+ virtual void setFrozen(std::string public_key) = 0; - virtual void setFrozen(int index) = 0; - virtual void thaw(int index) = 0; -+ virtual void thaw(std::string public_key) = 0; - virtual bool isTransferUnlocked(uint64_t unlockTime, uint64_t blockHeight) = 0; -+ virtual void setDescription(const std::string &public_key, const std::string &description) = 0; - }; - - struct SubaddressRow { -diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp -index 2a5f17a9f..2b3eaad2e 100644 ---- a/src/wallet/wallet2.cpp -+++ b/src/wallet/wallet2.cpp -@@ -2094,11 +2094,21 @@ bool wallet2::frozen(const multisig_tx_set& txs) const - return false; - } - //---------------------------------------------------------------------------------------------------- -+void wallet2::freeze(const crypto::public_key &pk) -+{ -+ freeze(get_transfer_details(pk)); -+} -+//---------------------------------------------------------------------------------------------------- - void wallet2::freeze(const crypto::key_image &ki) - { - freeze(get_transfer_details(ki)); - } - //---------------------------------------------------------------------------------------------------- -+void wallet2::thaw(const crypto::public_key &pk) -+{ -+ thaw(get_transfer_details(pk)); -+} -+//---------------------------------------------------------------------------------------------------- - void wallet2::thaw(const crypto::key_image &ki) - { - thaw(get_transfer_details(ki)); -@@ -2109,6 +2119,18 @@ bool wallet2::frozen(const crypto::key_image &ki) const - return frozen(get_transfer_details(ki)); - } - //---------------------------------------------------------------------------------------------------- -+size_t wallet2::get_transfer_details(const crypto::public_key &pk) const -+{ -+ for (size_t idx = 0; idx < m_transfers.size(); ++idx) -+ { -+ const transfer_details &td = m_transfers[idx]; -+ if (td.get_public_key() == pk) { -+ return idx; -+ } -+ } -+ CHECK_AND_ASSERT_THROW_MES(false, "Public key not found"); -+} -+//---------------------------------------------------------------------------------------------------- - size_t wallet2::get_transfer_details(const crypto::key_image &ki) const - { - for (size_t idx = 0; idx < m_transfers.size(); ++idx) -diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h -index 294a2d1f6..d1e68baac 100644 ---- a/src/wallet/wallet2.h -+++ b/src/wallet/wallet2.h -@@ -1563,6 +1563,8 @@ private: - uint64_t get_num_rct_outputs(); - size_t get_num_transfer_details() const { return m_transfers.size(); } - const transfer_details &get_transfer_details(size_t idx) const; -+ size_t get_transfer_details(const crypto::public_key &pk) const; -+ - - uint8_t get_current_hard_fork(); - void get_hard_fork_info(uint8_t version, uint64_t &earliest_height); -@@ -1793,7 +1795,9 @@ private: - void freeze(size_t idx); - void thaw(size_t idx); - bool frozen(size_t idx) const; -+ void freeze(const crypto::public_key &pk); - void freeze(const crypto::key_image &ki); -+ void thaw(const crypto::public_key &pk); - void thaw(const crypto::key_image &ki); - bool frozen(const crypto::key_image &ki) const; - bool frozen(const transfer_details &td) const; --- -2.45.2 - |
