mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-29 01:38:39 -04:00
Move code for collecting tradables to util class
This commit is contained in:
parent
6a01be8d29
commit
da25f041ec
4 changed files with 51 additions and 41 deletions
|
@ -0,0 +1,36 @@
|
|||
package io.bitsquare.trade;
|
||||
|
||||
import io.bitsquare.btc.AddressEntry;
|
||||
import io.bitsquare.btc.WalletService;
|
||||
import io.bitsquare.trade.offer.OpenOfferManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class TradableCollections {
|
||||
private static final Logger log = LoggerFactory.getLogger(TradableCollections.class);
|
||||
|
||||
public static List<AddressEntry> getAddressEntriesForAvailableBalance(OpenOfferManager openOfferManager, TradeManager tradeManager, WalletService walletService) {
|
||||
Set<String> reservedTrades = getNotCompletedTradableItems(openOfferManager, tradeManager).stream()
|
||||
.map(tradable -> tradable.getOffer().getId())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<AddressEntry> list = new ArrayList<>();
|
||||
list.addAll(walletService.getAddressEntryList().stream()
|
||||
.filter(e -> walletService.getBalanceForAddress(e.getAddress()).isPositive())
|
||||
.filter(e -> !reservedTrades.contains(e.getOfferId()))
|
||||
.collect(Collectors.toList()));
|
||||
return list;
|
||||
}
|
||||
|
||||
public static Set<Tradable> getNotCompletedTradableItems(OpenOfferManager openOfferManager, TradeManager tradeManager) {
|
||||
return Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream())
|
||||
.filter(tradable -> !(tradable instanceof Trade) || ((Trade) tradable).getState().getPhase() != Trade.Phase.PAYOUT_PAID)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
}
|
|
@ -26,7 +26,6 @@ import io.bitsquare.app.Version;
|
|||
import io.bitsquare.arbitration.ArbitratorManager;
|
||||
import io.bitsquare.arbitration.Dispute;
|
||||
import io.bitsquare.arbitration.DisputeManager;
|
||||
import io.bitsquare.btc.AddressEntry;
|
||||
import io.bitsquare.btc.FeePolicy;
|
||||
import io.bitsquare.btc.TradeWalletService;
|
||||
import io.bitsquare.btc.WalletService;
|
||||
|
@ -56,6 +55,7 @@ import io.bitsquare.p2p.network.Connection;
|
|||
import io.bitsquare.p2p.network.ConnectionListener;
|
||||
import io.bitsquare.p2p.peers.keepalive.messages.Ping;
|
||||
import io.bitsquare.payment.OKPayAccount;
|
||||
import io.bitsquare.trade.TradableCollections;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeManager;
|
||||
import io.bitsquare.trade.offer.OpenOffer;
|
||||
|
@ -73,11 +73,13 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class MainViewModel implements ViewModel {
|
||||
private static final Logger log = LoggerFactory.getLogger(MainViewModel.class);
|
||||
|
@ -682,7 +684,7 @@ public class MainViewModel implements ViewModel {
|
|||
}
|
||||
|
||||
private void updateReservedBalance() {
|
||||
Coin sum = Coin.valueOf(Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream())
|
||||
Coin sum = Coin.valueOf(TradableCollections.getNotCompletedTradableItems(openOfferManager, tradeManager).stream()
|
||||
.map(tradable -> walletService.getTradeAddressEntry(tradable.getId()))
|
||||
.map(addressEntry -> walletService.getBalanceForAddress(addressEntry.getAddress()))
|
||||
.mapToLong(Coin::getValue)
|
||||
|
@ -716,18 +718,9 @@ public class MainViewModel implements ViewModel {
|
|||
}
|
||||
|
||||
private void updateAvailableBalance() {
|
||||
List<AddressEntry> result = new ArrayList<>();
|
||||
|
||||
List<String> reservedTrades = Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream())
|
||||
.map(tradable -> tradable.getOffer().getId())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
result.addAll(walletService.getAddressEntryList().stream()
|
||||
.filter(e -> walletService.getBalanceForAddress(e.getAddress()).isPositive())
|
||||
.filter(e -> !reservedTrades.contains(e.getOfferId()))
|
||||
.collect(Collectors.toList()));
|
||||
|
||||
Optional<Coin> totalAvailableOptional = result.stream().map(e -> walletService.getBalanceForAddress(e.getAddress())).reduce(Coin::add);
|
||||
Optional<Coin> totalAvailableOptional = TradableCollections.getAddressEntriesForAvailableBalance(openOfferManager, tradeManager, walletService)
|
||||
.stream()
|
||||
.map(e -> walletService.getBalanceForAddress(e.getAddress())).reduce(Coin::add);
|
||||
if (totalAvailableOptional.isPresent())
|
||||
availableBalance.set(formatter.formatCoinWithCode(totalAvailableOptional.get()));
|
||||
else
|
||||
|
|
|
@ -30,6 +30,7 @@ import io.bitsquare.gui.main.overlays.windows.OfferDetailsWindow;
|
|||
import io.bitsquare.gui.main.overlays.windows.TradeDetailsWindow;
|
||||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.trade.Tradable;
|
||||
import io.bitsquare.trade.TradableCollections;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeManager;
|
||||
import io.bitsquare.trade.offer.OpenOffer;
|
||||
|
@ -49,7 +50,6 @@ import org.bitcoinj.core.Transaction;
|
|||
import javax.inject.Inject;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@FxmlView
|
||||
public class ReservedView extends ActivatableView<VBox, Void> {
|
||||
|
@ -135,9 +135,9 @@ public class ReservedView extends ActivatableView<VBox, Void> {
|
|||
|
||||
private void updateList() {
|
||||
observableList.forEach(ReservedListItem::cleanup);
|
||||
observableList.clear();
|
||||
observableList.setAll(Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream())
|
||||
.filter(tradable -> !(tradable instanceof Trade) || ((Trade) tradable).getState().getPhase() != Trade.Phase.PAYOUT_PAID)
|
||||
|
||||
|
||||
observableList.setAll(TradableCollections.getNotCompletedTradableItems(openOfferManager, tradeManager).stream()
|
||||
.map(tradable -> new ReservedListItem(tradable, walletService.getTradeAddressEntry(tradable.getOffer().getId()), walletService, formatter))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
|
|
@ -34,11 +34,11 @@ import io.bitsquare.gui.main.overlays.windows.WalletPasswordWindow;
|
|||
import io.bitsquare.gui.util.BSFormatter;
|
||||
import io.bitsquare.gui.util.validation.BtcAddressValidator;
|
||||
import io.bitsquare.trade.Tradable;
|
||||
import io.bitsquare.trade.TradableCollections;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.TradeManager;
|
||||
import io.bitsquare.trade.closed.ClosedTradableManager;
|
||||
import io.bitsquare.trade.failed.FailedTradesManager;
|
||||
import io.bitsquare.trade.offer.OpenOffer;
|
||||
import io.bitsquare.trade.offer.OpenOfferManager;
|
||||
import io.bitsquare.user.Preferences;
|
||||
import javafx.beans.binding.Bindings;
|
||||
|
@ -61,7 +61,6 @@ import org.spongycastle.crypto.params.KeyParameter;
|
|||
import javax.inject.Inject;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@FxmlView
|
||||
public class WithdrawalView extends ActivatableView<VBox, Void> {
|
||||
|
@ -277,32 +276,14 @@ public class WithdrawalView extends ActivatableView<VBox, Void> {
|
|||
}
|
||||
}
|
||||
|
||||
private void openDetailPopup(WithdrawalListItem item) {
|
||||
Optional<Tradable> tradableOptional = getTradable(item);
|
||||
if (tradableOptional.isPresent()) {
|
||||
Tradable tradable = tradableOptional.get();
|
||||
if (tradable instanceof Trade) {
|
||||
tradeDetailsWindow.show((Trade) tradable);
|
||||
} else if (tradable instanceof OpenOffer) {
|
||||
offerDetailsWindow.show(tradable.getOffer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Private
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private void updateList() {
|
||||
Set<String> reservedTrades = Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream())
|
||||
.filter(tradable -> !(tradable instanceof Trade) || ((Trade) tradable).getState().getPhase() != Trade.Phase.PAYOUT_PAID)
|
||||
.map(tradable -> tradable.getOffer().getId())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
observableList.forEach(WithdrawalListItem::cleanup);
|
||||
observableList.setAll(walletService.getAddressEntryList().stream()
|
||||
.filter(e -> walletService.getBalanceForAddress(e.getAddress()).isPositive())
|
||||
.filter(e -> !reservedTrades.contains(e.getOfferId()))
|
||||
observableList.setAll(TradableCollections.getAddressEntriesForAvailableBalance(openOfferManager, tradeManager, walletService).stream()
|
||||
.map(addressEntry -> new WithdrawalListItem(addressEntry, walletService, formatter))
|
||||
.collect(Collectors.toList()));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue