summaryrefslogtreecommitdiff
path: root/patches/monero/0021-fix-error-messages-with-coin-control.patch
blob: b4e3625f6823362557e9c91e351bc49598f02b09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From 6259ee6acea965c2bc0bc2e4a24a73e543b062cb Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Mon, 9 Dec 2024 11:21:06 -0500
Subject: [PATCH] fix error messages with coin control

---
 src/wallet/api/wallet.cpp | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
index de507b3..731055a 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -2156,8 +2156,9 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri
         //   break;
         // }
         std::vector<crypto::key_image> preferred_input_list;
+        uint64_t max_coin_control_input = 0;
         if (!preferred_inputs.empty()) {
-          LOG_ERROR("empty");
+          LOG_ERROR("not empty");
 
           for (const auto &public_key : preferred_inputs) {
             crypto::key_image keyImage;
@@ -2173,6 +2174,13 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri
               break;
             }
 
+            for (size_t i = 0; i < m_wallet->get_num_transfer_details(); ++i) {
+                const tools::wallet2::transfer_details &td = m_wallet->get_transfer_details(i);
+                if (td.m_key_image == keyImage) {
+                    max_coin_control_input += td.amount();
+                }
+            }
+
             preferred_input_list.push_back(keyImage);
           }
         } else {
@@ -2252,6 +2260,11 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri
                       print_money(e.tx_amount() + e.fee())  %
                       print_money(e.tx_amount()) %
                       print_money(e.fee());
+            if (max_coin_control_input != 0 &&
+                max_coin_control_input != e.available()) {
+                writer << std::endl << boost::format(tr("In addition, coin control was enabled for this transaction, limiting available balance to %s. Make sure that you have enough outputs selected in coin control")) %
+                    print_money(max_coin_control_input);
+            }
             setStatusError(writer.str());
         } catch (const tools::error::not_enough_outs_to_mix& e) {
             std::ostringstream writer;
-- 
2.39.5 (Apple Git-154)