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.
This commit is contained in:
furszy
2022-12-14 22:30:59 -03:00
parent 74eac3a82f
commit cd98b71739

View File

@@ -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);
}