From 60ceff66955f0be9a9659477f380dce6bfb6a61f Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Tue, 15 Apr 2025 16:57:19 -0400 Subject: [PATCH] fix redundant key image notifications --- .../haveno/core/xmr/wallet/XmrKeyImagePoller.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/haveno/core/xmr/wallet/XmrKeyImagePoller.java b/core/src/main/java/haveno/core/xmr/wallet/XmrKeyImagePoller.java index 1cde84152c..3bebb71b7f 100644 --- a/core/src/main/java/haveno/core/xmr/wallet/XmrKeyImagePoller.java +++ b/core/src/main/java/haveno/core/xmr/wallet/XmrKeyImagePoller.java @@ -144,7 +144,6 @@ public class XmrKeyImagePoller { if (!keyImageGroups.containsKey(groupId)) keyImageGroups.put(groupId, new HashSet()); Set keyImagesGroup = keyImageGroups.get(groupId); keyImagesGroup.addAll(keyImages); - refreshPolling(); } } @@ -159,8 +158,13 @@ public class XmrKeyImagePoller { if (keyImagesGroup == null) return; keyImagesGroup.removeAll(keyImages); if (keyImagesGroup.isEmpty()) keyImageGroups.remove(groupId); + Set allKeyImages = getKeyImages(); synchronized (lastStatuses) { - for (String lastKeyImage : new HashSet<>(lastStatuses.keySet())) lastStatuses.remove(lastKeyImage); + for (String keyImage : keyImages) { + if (lastStatuses.containsKey(keyImage) && !allKeyImages.contains(keyImage)) { + lastStatuses.remove(keyImage); + } + } } refreshPolling(); } @@ -171,10 +175,10 @@ public class XmrKeyImagePoller { Set keyImagesGroup = keyImageGroups.get(groupId); if (keyImagesGroup == null) return; keyImageGroups.remove(groupId); - Set keyImages = getKeyImages(); + Set allKeyImages = getKeyImages(); synchronized (lastStatuses) { for (String keyImage : keyImagesGroup) { - if (lastStatuses.containsKey(keyImage) && !keyImages.contains(keyImage)) { + if (lastStatuses.containsKey(keyImage) && !allKeyImages.contains(keyImage)) { lastStatuses.remove(keyImage); } } @@ -265,6 +269,7 @@ public class XmrKeyImagePoller { // announce changes if (!changedStatuses.isEmpty()) { + log.info("Announcing " + changedStatuses.size() + " key image spent status changes"); for (XmrKeyImageListener listener : new ArrayList(listeners)) { listener.onSpentStatusChanged(changedStatuses); }