From 76d85b1940246f03e17a1cffc5399172efe866b4 Mon Sep 17 00:00:00 2001 From: Android-X13 <76814540+Android-X13@users.noreply.github.com> Date: Sat, 3 Sep 2022 19:12:49 +0300 Subject: [PATCH] Refresh all avatars upon setting a tag --- .../bisq/desktop/components/PeerInfoIcon.java | 39 +++++++++------- .../components/PeerInfoIconDispute.java | 4 -- .../main/offer/offerbook/OfferBookView.java | 44 +++++++++++++------ .../main/support/dispute/DisputeView.java | 2 - 4 files changed, 55 insertions(+), 34 deletions(-) diff --git a/desktop/src/main/java/bisq/desktop/components/PeerInfoIcon.java b/desktop/src/main/java/bisq/desktop/components/PeerInfoIcon.java index dc494e3049..9a7b7e101c 100644 --- a/desktop/src/main/java/bisq/desktop/components/PeerInfoIcon.java +++ b/desktop/src/main/java/bisq/desktop/components/PeerInfoIcon.java @@ -55,6 +55,10 @@ import javax.annotation.Nullable; @Slf4j public class PeerInfoIcon extends Group { public interface notify { + /** + * Callback from one avatar letting us know that the user updated the tag text. + * We need to update all avatars, as some could be sharing the same tag. + */ void avatarTagUpdated(); } @@ -184,7 +188,7 @@ public class PeerInfoIcon extends Group { .position(localToScene(new Point2D(0, 0))) .onSave(newTag -> { preferences.setTagForPeer(fullAddress, newTag); - updatePeerInfoIcon(); + refreshTag(); if (callback != null) { callback.avatarTagUpdated(); } @@ -205,20 +209,6 @@ public class PeerInfoIcon extends Group { } protected void updatePeerInfoIcon() { - String tag; - Map peerTagMap = preferences.getPeerTagMap(); - if (peerTagMap.containsKey(fullAddress)) { - tag = peerTagMap.get(fullAddress); - final String text = !tag.isEmpty() ? Res.get("peerInfoIcon.tooltip", tooltipText, tag) : tooltipText; - Tooltip.install(this, new Tooltip(text)); - } else { - tag = ""; - Tooltip.install(this, new Tooltip(tooltipText)); - } - - if (!tag.isEmpty()) - tagLabel.setText(tag.substring(0, 1)); - if (numTrades > 0) { numTradesLabel.setText(numTrades > 99 ? "*" : String.valueOf(numTrades)); @@ -232,6 +222,25 @@ public class PeerInfoIcon extends Group { numTradesPane.setVisible(numTrades > 0); + refreshTag(); + } + + public void refreshTag() { + String tag; + Map peerTagMap = preferences.getPeerTagMap(); + if (peerTagMap.containsKey(fullAddress)) { + tag = peerTagMap.get(fullAddress); + final String text = !tag.isEmpty() ? Res.get("peerInfoIcon.tooltip", tooltipText, tag) : tooltipText; + Tooltip.install(this, new Tooltip(text)); + } else { + tag = ""; + Tooltip.install(this, new Tooltip(tooltipText)); + } + + if (!tag.isEmpty()) { + tagLabel.setText(tag.substring(0, 1)); + } + tagPane.setVisible(!tag.isEmpty()); } } diff --git a/desktop/src/main/java/bisq/desktop/components/PeerInfoIconDispute.java b/desktop/src/main/java/bisq/desktop/components/PeerInfoIconDispute.java index 178d9750ed..aa18599008 100644 --- a/desktop/src/main/java/bisq/desktop/components/PeerInfoIconDispute.java +++ b/desktop/src/main/java/bisq/desktop/components/PeerInfoIconDispute.java @@ -42,8 +42,4 @@ public class PeerInfoIconDispute extends PeerInfoIcon { addMouseListener(numTrades, null, null, null, preferences, false, false, accountAge, 0L, null, null, null); } - - public void refreshTag() { - updatePeerInfoIcon(); - } } diff --git a/desktop/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java b/desktop/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java index f3a1d9dc84..d4b47cd75e 100644 --- a/desktop/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java +++ b/desktop/src/main/java/bisq/desktop/main/offer/offerbook/OfferBookView.java @@ -28,6 +28,7 @@ import bisq.desktop.components.AutocompleteComboBox; import bisq.desktop.components.ColoredDecimalPlacesWithZerosText; import bisq.desktop.components.HyperlinkWithIcon; import bisq.desktop.components.InfoAutoTooltipLabel; +import bisq.desktop.components.PeerInfoIcon; import bisq.desktop.components.PeerInfoIconTrading; import bisq.desktop.components.TitledGroupBg; import bisq.desktop.main.MainView; @@ -112,6 +113,7 @@ import javafx.util.Callback; import javafx.util.StringConverter; import java.util.Comparator; +import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -119,7 +121,7 @@ import org.jetbrains.annotations.NotNull; import static bisq.desktop.util.FormBuilder.addTitledGroupBg; -abstract public class OfferBookView extends ActivatableViewAndModel { +abstract public class OfferBookView extends ActivatableViewAndModel implements PeerInfoIcon.notify { private final Navigation navigation; private final OfferDetailsWindow offerDetailsWindow; @@ -152,6 +154,7 @@ abstract public class OfferBookView avatarMap = new HashMap<>(); /////////////////////////////////////////////////////////////////////////////////////////// // Constructor, lifecycle @@ -1266,18 +1269,7 @@ abstract public class OfferBookView { + avatarIcon.refreshTag(); + }); + } + @NotNull private Region getSpacer() { final Region spacer = new Region(); diff --git a/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java b/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java index 9ebd7a3528..6e69a7309f 100644 --- a/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java +++ b/desktop/src/main/java/bisq/desktop/main/support/dispute/DisputeView.java @@ -1495,8 +1495,6 @@ public abstract class DisputeView extends ActivatableView implements @Override public void avatarTagUpdated() { - // callback from one avatar letting us know that the user updated the tag text. - // we update all avatars, as some could be sharing the same tag log.info("Updating avatar tags, the avatarMap size is {}", avatarMap.size()); avatarMap.forEach((key, avatarIcon) -> { avatarIcon.refreshTag();