From cb1998db0576251e21838fa8d054757a045f7d92 Mon Sep 17 00:00:00 2001 From: jmacxx <47253594+jmacxx@users.noreply.github.com> Date: Mon, 29 Nov 2021 09:18:55 -0600 Subject: [PATCH] Bugfix: dispute ticket reopened by mailbox message --- .../bisq/core/notifications/alerts/DisputeMsgEvents.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/bisq/core/notifications/alerts/DisputeMsgEvents.java b/core/src/main/java/bisq/core/notifications/alerts/DisputeMsgEvents.java index 6f201a0aa3..8e03379dd6 100644 --- a/core/src/main/java/bisq/core/notifications/alerts/DisputeMsgEvents.java +++ b/core/src/main/java/bisq/core/notifications/alerts/DisputeMsgEvents.java @@ -35,6 +35,8 @@ import javax.inject.Singleton; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; +import java.util.Comparator; +import java.util.Optional; import java.util.UUID; import lombok.extern.slf4j.Slf4j; @@ -119,10 +121,12 @@ public class DisputeMsgEvents { // We check at every new message if it might be a message sent after the dispute had been closed. If that is the // case we revert the isClosed flag so that the UI can reopen the dispute and indicate that a new dispute // message arrived. - ObservableList chatMessages = dispute.getChatMessages(); + Optional newestChatMessage = dispute.getChatMessages().stream(). + sorted(Comparator.comparingLong(ChatMessage::getDate).reversed()).findFirst(); // If last message is not a result message we re-open as we might have received a new message from the // trader/mediator/arbitrator who has reopened the case - if (dispute.isClosed() && !chatMessages.isEmpty() && !chatMessages.get(chatMessages.size() - 1).isResultMessage(dispute)) { + if (dispute.isClosed() && newestChatMessage.isPresent() && !newestChatMessage.get().isResultMessage(dispute)) { + log.info("Reopening dispute {} due to new chat message received {}", dispute.getTradeId(), newestChatMessage.get().getUid()); dispute.reOpen(); if (dispute.getSupportType() == SupportType.MEDIATION) { mediationManager.requestPersistence();