From cd98b717398f7b13ace91ea9efac9ce1e60b4d62 Mon Sep 17 00:00:00 2001 From: furszy Date: Wed, 14 Dec 2022 22:30:59 -0300 Subject: [PATCH] gui: 'getAvailableBalance', include watch only balance Only for wallets with private keys disabled. The returned amount need to include the watch-only available balance too. Solves #26687. --- src/qt/walletmodel.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 61172d1625..565b732bf0 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -613,5 +613,17 @@ uint256 WalletModel::getLastBlockProcessed() const CAmount WalletModel::getAvailableBalance(const CCoinControl* control) { - return control && control->HasSelected() ? wallet().getAvailableBalance(*control) : getCachedBalance().balance; + // No selected coins, return the cached balance + if (!control || !control->HasSelected()) { + const interfaces::WalletBalances& balances = getCachedBalance(); + CAmount available_balance = balances.balance; + // if wallet private keys are disabled, this is a watch-only wallet + // so, let's include the watch-only balance. + if (balances.have_watch_only && m_wallet->privateKeysDisabled()) { + available_balance += balances.watch_only_balance; + } + return available_balance; + } + // Fetch balance from the wallet, taking into account the selected coins + return wallet().getAvailableBalance(*control); }