From ce468d22ddbb255358faa439d47b90986bbf339e Mon Sep 17 00:00:00 2001 From: catbref Date: Mon, 31 Aug 2020 11:25:21 +0100 Subject: [PATCH] Fix updating of current tradeoffers list as used by tradeoffers websocket --- .../org/qortal/api/websocket/TradeOffersWebSocket.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java b/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java index 0de31972..622c005f 100644 --- a/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java +++ b/src/main/java/org/qortal/api/websocket/TradeOffersWebSocket.java @@ -106,15 +106,21 @@ public class TradeOffersWebSocket extends ApiWebSocket implements Listener { // Update previousAtModes.putAll(crossChainOfferSummaries.stream().collect(Collectors.toMap(CrossChainOfferSummary::getQortalAtAddress, CrossChainOfferSummary::getMode))); + // Find 'historic' (REDEEMED/REFUNDED/CANCELLED) entries for use below: + List historicOffers = crossChainOfferSummaries.stream().filter(isHistoric).collect(Collectors.toList()); + synchronized (currentSummaries) { // Add any OFFERING to 'current' currentSummaries.addAll(crossChainOfferSummaries.stream().filter(isCurrent).collect(Collectors.toList())); + + // Remove any offers that have become REDEEMED/REFUNDED/CANCELLED + currentSummaries.removeAll(historicOffers); } final long tooOldTimestamp = NTP.getTime() - 24 * 60 * 60 * 1000L; synchronized (historicSummaries) { // Add any REDEEMED/REFUNDED/CANCELLED - historicSummaries.addAll(crossChainOfferSummaries.stream().filter(isHistoric).collect(Collectors.toList())); + historicSummaries.addAll(historicOffers); // But also remove any that are over 24 hours old historicSummaries.removeIf(offerSummary -> offerSummary.getTimestamp() < tooOldTimestamp);