Skip to content

Commit c245d6e

Browse files
woodserNorrinRadd
authored andcommitted
fix redundant key image notifications
1 parent 5fae369 commit c245d6e

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

core/src/main/java/haveno/core/xmr/wallet/XmrKeyImagePoller.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@ public void addKeyImages(Collection<String> keyImages, String groupId) {
144144
if (!keyImageGroups.containsKey(groupId)) keyImageGroups.put(groupId, new HashSet<String>());
145145
Set<String> keyImagesGroup = keyImageGroups.get(groupId);
146146
keyImagesGroup.addAll(keyImages);
147-
refreshPolling();
148147
}
149148
}
150149

@@ -159,8 +158,13 @@ public void removeKeyImages(Collection<String> keyImages, String groupId) {
159158
if (keyImagesGroup == null) return;
160159
keyImagesGroup.removeAll(keyImages);
161160
if (keyImagesGroup.isEmpty()) keyImageGroups.remove(groupId);
161+
Set<String> allKeyImages = getKeyImages();
162162
synchronized (lastStatuses) {
163-
for (String lastKeyImage : new HashSet<>(lastStatuses.keySet())) lastStatuses.remove(lastKeyImage);
163+
for (String keyImage : keyImages) {
164+
if (lastStatuses.containsKey(keyImage) && !allKeyImages.contains(keyImage)) {
165+
lastStatuses.remove(keyImage);
166+
}
167+
}
164168
}
165169
refreshPolling();
166170
}
@@ -171,10 +175,10 @@ public void removeKeyImages(String groupId) {
171175
Set<String> keyImagesGroup = keyImageGroups.get(groupId);
172176
if (keyImagesGroup == null) return;
173177
keyImageGroups.remove(groupId);
174-
Set<String> keyImages = getKeyImages();
178+
Set<String> allKeyImages = getKeyImages();
175179
synchronized (lastStatuses) {
176180
for (String keyImage : keyImagesGroup) {
177-
if (lastStatuses.containsKey(keyImage) && !keyImages.contains(keyImage)) {
181+
if (lastStatuses.containsKey(keyImage) && !allKeyImages.contains(keyImage)) {
178182
lastStatuses.remove(keyImage);
179183
}
180184
}
@@ -265,6 +269,7 @@ public void poll() {
265269

266270
// announce changes
267271
if (!changedStatuses.isEmpty()) {
272+
log.info("Announcing " + changedStatuses.size() + " key image spent status changes");
268273
for (XmrKeyImageListener listener : new ArrayList<XmrKeyImageListener>(listeners)) {
269274
listener.onSpentStatusChanged(changedStatuses);
270275
}

0 commit comments

Comments
 (0)