From cadf2073cff4ca7c08e715d37d0e93bbe8747813 Mon Sep 17 00:00:00 2001 From: HenrikJannsen Date: Thu, 4 May 2023 15:24:07 +0700 Subject: [PATCH] Fix updateReservedBalance. btcWalletService.getAddressEntriesForOpenOffer() contains also OFFER_FUNDING entries. This version minimizes the change by mapping to address and use distinct to avoid duplicate entries to be summed up. Signed-off-by: HenrikJannsen --- core/src/main/java/bisq/core/btc/Balances.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/bisq/core/btc/Balances.java b/core/src/main/java/bisq/core/btc/Balances.java index cf372b37f3..73326c6ab1 100644 --- a/core/src/main/java/bisq/core/btc/Balances.java +++ b/core/src/main/java/bisq/core/btc/Balances.java @@ -42,7 +42,6 @@ import javafx.beans.property.SimpleObjectProperty; import javafx.collections.ListChangeListener; import java.util.Objects; -import java.util.stream.Collectors; import java.util.stream.Stream; import lombok.Getter; @@ -111,10 +110,12 @@ public class Balances { } private void updateReservedBalance() { - long sum = btcWalletService.getAddressEntriesForOpenOffer().stream() - .collect(Collectors.toMap(AddressEntry::getAddress, p -> p, (p, q) -> p)) - .keySet() - .stream() + long sum = openOfferManager.getObservableList().stream() + .map(openOffer -> btcWalletService.getAddressEntry(openOffer.getId(), AddressEntry.Context.RESERVED_FOR_TRADE) + .orElse(null)) + .filter(Objects::nonNull) + .map(AddressEntry::getAddress) + .distinct() .mapToLong(address -> btcWalletService.getBalanceForAddress(address).value) .sum(); reservedBalance.set(Coin.valueOf(sum)); @@ -124,7 +125,7 @@ public class Balances { Stream lockedTrades = Stream.concat(closedTradableManager.getTradesStreamWithFundsLockedIn(), failedTradesManager.getTradesStreamWithFundsLockedIn()); lockedTrades = Stream.concat(lockedTrades, tradeManager.getTradesStreamWithFundsLockedIn()); long sum = lockedTrades.map(trade -> btcWalletService.getAddressEntry(trade.getId(), AddressEntry.Context.MULTI_SIG) - .orElse(null)) + .orElse(null)) .filter(Objects::nonNull) .mapToLong(AddressEntry::getCoinLockedInMultiSig) .sum();