From 958661f25bf31624e82af0778fd6974052837682 Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 5 Feb 2025 19:53:09 +0000 Subject: [PATCH 1/3] Show XMR subaddress popup if user has non-subaddress account Before PR #7123, we showed the XMR subaddress popup whenever the user naviated to the account tab. After PR #7123, we show the XMR subaddress popup if the user has an XMR account. However, it's better show the popup if the user has a non-subaddress XMR account. --- .../AltCoinAccountsDataModel.java | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java b/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java index 4dc8f2121e..4a493ee836 100644 --- a/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java +++ b/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java @@ -26,6 +26,7 @@ import bisq.core.locale.Res; import bisq.core.locale.TradeCurrency; import bisq.core.offer.OpenOfferManager; import bisq.core.payment.AssetAccount; +import bisq.core.payment.CryptoCurrencyAccount; import bisq.core.payment.PaymentAccount; import bisq.core.trade.TradeManager; import bisq.core.user.Preferences; @@ -44,6 +45,7 @@ import javafx.collections.SetChangeListener; import java.util.ArrayList; import java.util.Comparator; +import java.util.Map; import java.util.stream.Collectors; class AltCoinAccountsDataModel extends ActivatableDataModel { @@ -79,14 +81,17 @@ class AltCoinAccountsDataModel extends ActivatableDataModel { user.getPaymentAccountsAsObservable().addListener(setChangeListener); fillAndSortPaymentAccounts(); - paymentAccounts.stream().filter(e -> e.getSingleTradeCurrency().getCode().equals("XMR")) - .findAny().ifPresent(e -> { - new Popup() - .headLine(Res.get("account.altcoin.popup.xmr.dataDirWarningHeadline")) - .backgroundInfo(Res.get("account.altcoin.popup.xmr.dataDirWarning")) - .dontShowAgainId("accountSubAddressInfo") - .width(700) - .show(); + paymentAccounts.stream() + .filter(e -> e.getSingleTradeCurrency().getCode().equals("XMR")) + .forEach(e -> { + if (!xmrAccountUsesSubAddresses(e)) { + new Popup() + .headLine(Res.get("account.altcoin.popup.xmr.dataDirWarningHeadline")) + .backgroundInfo(Res.get("account.altcoin.popup.xmr.dataDirWarning")) + .dontShowAgainId("accountSubAddressInfo") + .width(700) + .show(); + } }); } @@ -99,6 +104,21 @@ class AltCoinAccountsDataModel extends ActivatableDataModel { } } + private boolean xmrAccountUsesSubAddresses(PaymentAccount paymentAccount) { + if (paymentAccount instanceof CryptoCurrencyAccount) { + CryptoCurrencyAccount account = (CryptoCurrencyAccount) paymentAccount; + Map extraData = account.getExtraData(); + if (extraData == null) { + return false; + } + + String useXMmrSubAddresses = extraData.get("UseXMmrSubAddresses"); + return useXMmrSubAddresses != null && useXMmrSubAddresses.equals("1"); + } + + return false; + } + @Override protected void deactivate() { user.getPaymentAccountsAsObservable().removeListener(setChangeListener); From 5e04336c4d0daa17c3dff1b401eaace0a8433222 Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 5 Feb 2025 19:53:09 +0000 Subject: [PATCH 2/3] Show XMR subaddress popup during account creation Additionally show the XMR subaddress popup during account creation, so that user can look up how subaddresses work and set it up. --- .../bisq/desktop/components/paymentmethods/XmrForm.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java index b76f372ae1..29f7f127e3 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java @@ -203,6 +203,13 @@ public class XmrForm extends AssetsForm { setFieldManagement(xmrAccountDelegate.isUsingSubAddresses()); addLimitations(false); addAccountNameTextFieldWithAutoFillToggleButton(); + + new Popup() + .headLine(Res.get("account.altcoin.popup.xmr.dataDirWarningHeadline")) + .backgroundInfo(Res.get("account.altcoin.popup.xmr.dataDirWarning")) + .dontShowAgainId("accountSubAddressInfo") + .width(700) + .show(); } void setFieldManagement(boolean useSubAddresses) { From 861f655ae7de9d42196aa6deb696c78b57fa5266 Mon Sep 17 00:00:00 2001 From: Alva Swanson Date: Wed, 5 Feb 2025 19:53:09 +0000 Subject: [PATCH 3/3] Refactor duplicate XMR subaddress popup code --- .../components/paymentmethods/XmrForm.java | 16 ++++++++++------ .../AltCoinAccountsDataModel.java | 10 ++-------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java b/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java index 29f7f127e3..e0375b8806 100644 --- a/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java +++ b/desktop/src/main/java/bisq/desktop/components/paymentmethods/XmrForm.java @@ -204,12 +204,7 @@ public class XmrForm extends AssetsForm { addLimitations(false); addAccountNameTextFieldWithAutoFillToggleButton(); - new Popup() - .headLine(Res.get("account.altcoin.popup.xmr.dataDirWarningHeadline")) - .backgroundInfo(Res.get("account.altcoin.popup.xmr.dataDirWarning")) - .dontShowAgainId("accountSubAddressInfo") - .width(700) - .show(); + showXmrSubAddressPopup(); } void setFieldManagement(boolean useSubAddresses) { @@ -369,6 +364,15 @@ public class XmrForm extends AssetsForm { } } + public static void showXmrSubAddressPopup() { + new Popup() + .headLine(Res.get("account.altcoin.popup.xmr.dataDirWarningHeadline")) + .backgroundInfo(Res.get("account.altcoin.popup.xmr.dataDirWarning")) + .dontShowAgainId("accountSubAddressInfo") + .width(700) + .show(); + } + private void maybeShowXmrSubAddressInfo() { String key = "xmrSubAddressInfo"; if (DontShowAgainLookup.showAgain(key)) { diff --git a/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java b/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java index 4a493ee836..4792521100 100644 --- a/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java +++ b/desktop/src/main/java/bisq/desktop/main/account/content/altcoinaccounts/AltCoinAccountsDataModel.java @@ -18,11 +18,10 @@ package bisq.desktop.main.account.content.altcoinaccounts; import bisq.desktop.common.model.ActivatableDataModel; -import bisq.desktop.main.overlays.popups.Popup; +import bisq.desktop.components.paymentmethods.XmrForm; import bisq.desktop.util.GUIUtil; import bisq.core.locale.CryptoCurrency; -import bisq.core.locale.Res; import bisq.core.locale.TradeCurrency; import bisq.core.offer.OpenOfferManager; import bisq.core.payment.AssetAccount; @@ -85,12 +84,7 @@ class AltCoinAccountsDataModel extends ActivatableDataModel { .filter(e -> e.getSingleTradeCurrency().getCode().equals("XMR")) .forEach(e -> { if (!xmrAccountUsesSubAddresses(e)) { - new Popup() - .headLine(Res.get("account.altcoin.popup.xmr.dataDirWarningHeadline")) - .backgroundInfo(Res.get("account.altcoin.popup.xmr.dataDirWarning")) - .dontShowAgainId("accountSubAddressInfo") - .width(700) - .show(); + XmrForm.showXmrSubAddressPopup(); } }); }