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 <boilingfrog@gmx.com>
This commit is contained in:
HenrikJannsen 2023-05-04 15:24:07 +07:00
parent f6c31aa479
commit cadf2073cf
No known key found for this signature in database
GPG key ID: 02AA2BAE387C8307

View file

@ -42,7 +42,6 @@ import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.ListChangeListener; import javafx.collections.ListChangeListener;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import lombok.Getter; import lombok.Getter;
@ -111,10 +110,12 @@ public class Balances {
} }
private void updateReservedBalance() { private void updateReservedBalance() {
long sum = btcWalletService.getAddressEntriesForOpenOffer().stream() long sum = openOfferManager.getObservableList().stream()
.collect(Collectors.toMap(AddressEntry::getAddress, p -> p, (p, q) -> p)) .map(openOffer -> btcWalletService.getAddressEntry(openOffer.getId(), AddressEntry.Context.RESERVED_FOR_TRADE)
.keySet() .orElse(null))
.stream() .filter(Objects::nonNull)
.map(AddressEntry::getAddress)
.distinct()
.mapToLong(address -> btcWalletService.getBalanceForAddress(address).value) .mapToLong(address -> btcWalletService.getBalanceForAddress(address).value)
.sum(); .sum();
reservedBalance.set(Coin.valueOf(sum)); reservedBalance.set(Coin.valueOf(sum));
@ -124,7 +125,7 @@ public class Balances {
Stream<Trade> lockedTrades = Stream.concat(closedTradableManager.getTradesStreamWithFundsLockedIn(), failedTradesManager.getTradesStreamWithFundsLockedIn()); Stream<Trade> lockedTrades = Stream.concat(closedTradableManager.getTradesStreamWithFundsLockedIn(), failedTradesManager.getTradesStreamWithFundsLockedIn());
lockedTrades = Stream.concat(lockedTrades, tradeManager.getTradesStreamWithFundsLockedIn()); lockedTrades = Stream.concat(lockedTrades, tradeManager.getTradesStreamWithFundsLockedIn());
long sum = lockedTrades.map(trade -> btcWalletService.getAddressEntry(trade.getId(), AddressEntry.Context.MULTI_SIG) long sum = lockedTrades.map(trade -> btcWalletService.getAddressEntry(trade.getId(), AddressEntry.Context.MULTI_SIG)
.orElse(null)) .orElse(null))
.filter(Objects::nonNull) .filter(Objects::nonNull)
.mapToLong(AddressEntry::getCoinLockedInMultiSig) .mapToLong(AddressEntry::getCoinLockedInMultiSig)
.sum(); .sum();