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);