diff --git a/core/src/main/java/bisq/core/trade/protocol/tasks/PublishTradeStatistics.java b/core/src/main/java/bisq/core/trade/protocol/tasks/PublishTradeStatistics.java index 1cb10f16e96..421b69e1857 100644 --- a/core/src/main/java/bisq/core/trade/protocol/tasks/PublishTradeStatistics.java +++ b/core/src/main/java/bisq/core/trade/protocol/tasks/PublishTradeStatistics.java @@ -70,7 +70,7 @@ protected void run() { trade.getTradePrice(), trade.getTradeAmount(), trade.getDate(), - null, + trade.getDepositTxId(), extraDataMap); processModel.getP2PService().addPersistableNetworkPayload(tradeStatistics, true); } diff --git a/core/src/main/java/bisq/core/trade/statistics/TradeStatistics2.java b/core/src/main/java/bisq/core/trade/statistics/TradeStatistics2.java index 1e4c87abe69..1983ec52be8 100644 --- a/core/src/main/java/bisq/core/trade/statistics/TradeStatistics2.java +++ b/core/src/main/java/bisq/core/trade/statistics/TradeStatistics2.java @@ -47,7 +47,6 @@ import com.google.common.base.Charsets; import java.util.Date; -import java.util.GregorianCalendar; import java.util.Map; import java.util.Optional; @@ -71,8 +70,6 @@ public final class TradeStatistics2 implements ProcessOncePersistableNetworkPayl public static final String MEDIATOR_ADDRESS = "medAddr"; public static final String REFUND_AGENT_ADDRESS = "refAddr"; - public static final Date CUT_OFF_DATE_FOR_DEPOSIT_TX_ID = Utilities.getUTCDate(2019, GregorianCalendar.FEBRUARY, 13); - private final OfferPayload.Direction direction; private final String baseCurrency; private final String counterCurrency; diff --git a/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java b/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java index ee0fbc03d4e..4d90fc143c9 100644 --- a/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java +++ b/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java @@ -40,6 +40,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -81,6 +82,9 @@ public void onAllServicesInitialized() { Set collect = tradeStatistics2StorageService.getMap().values().stream() .filter(e -> e instanceof TradeStatistics2) .map(e -> (TradeStatistics2) e) + .map(WrapperTradeStatistics2::new) + .distinct() + .map(WrapperTradeStatistics2::unwrap) .filter(TradeStatistics2::isValid) .collect(Collectors.toSet()); observableTradeStatisticsSet.addAll(collect); @@ -150,4 +154,29 @@ private void dump() { jsonFileManager.writeToDisc(Utilities.objectToJson(array), "trade_statistics"); } } + + static class WrapperTradeStatistics2 { + private TradeStatistics2 tradeStatistics; + + public WrapperTradeStatistics2(TradeStatistics2 tradeStatistics) { + this.tradeStatistics = tradeStatistics; + } + + public TradeStatistics2 unwrap() { + return this.tradeStatistics; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + var wrapper = (WrapperTradeStatistics2) obj; + return Objects.equals(tradeStatistics.getOfferId(), wrapper.tradeStatistics.getOfferId()); + } + + @Override + public int hashCode() { + return Objects.hash(tradeStatistics.getOfferId()); + } + } }