From 69d3b2392ba513a35729afa667e4941289fff884 Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Sat, 1 Mar 2025 12:45:14 -0500 Subject: [PATCH] do not ignore local node if configured --- .../java/haveno/core/api/XmrLocalNode.java | 23 +++++++++++++++++-- .../haveno/core/user/PreferencesTest.java | 6 +++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/haveno/core/api/XmrLocalNode.java b/core/src/main/java/haveno/core/api/XmrLocalNode.java index 5a424dad38..583ae8b390 100644 --- a/core/src/main/java/haveno/core/api/XmrLocalNode.java +++ b/core/src/main/java/haveno/core/api/XmrLocalNode.java @@ -25,6 +25,8 @@ import haveno.core.trade.HavenoUtils; import haveno.core.user.Preferences; import haveno.core.xmr.XmrNodeSettings; import haveno.core.xmr.nodes.XmrNodes; +import haveno.core.xmr.nodes.XmrNodes.XmrNode; +import haveno.core.xmr.nodes.XmrNodesSetupPreferences; import haveno.core.xmr.wallet.XmrWalletService; import java.io.File; @@ -55,6 +57,7 @@ public class XmrLocalNode { private MoneroConnectionManager connectionManager; private final Config config; private final Preferences preferences; + private final XmrNodes xmrNodes; private final List listeners = new ArrayList<>(); // required arguments @@ -69,9 +72,12 @@ public class XmrLocalNode { } @Inject - public XmrLocalNode(Config config, Preferences preferences) { + public XmrLocalNode(Config config, + Preferences preferences, + XmrNodes xmrNodes) { this.config = config; this.preferences = preferences; + this.xmrNodes = xmrNodes; this.daemon = new MoneroDaemonRpc(getUri()); // initialize connection manager to listen to local connection @@ -101,7 +107,20 @@ public class XmrLocalNode { * Returns whether Haveno should ignore a local Monero node even if it is usable. */ public boolean shouldBeIgnored() { - return config.ignoreLocalXmrNode || preferences.getMoneroNodesOption() == XmrNodes.MoneroNodesOption.CUSTOM; + if (config.ignoreLocalXmrNode) return true; + + // determine if local node is configured + boolean hasConfiguredLocalNode = false; + for (XmrNode node : xmrNodes.selectPreferredNodes(new XmrNodesSetupPreferences(preferences))) { + String prefix = node.getAddress().startsWith("http") ? "" : "http://"; + if (equalsUri(prefix + node.getAddress() + ":" + node.getPort())) { + hasConfiguredLocalNode = true; + break; + } + } + if (!hasConfiguredLocalNode) return true; + + return false; } public void addListener(XmrLocalNodeListener listener) { diff --git a/core/src/test/java/haveno/core/user/PreferencesTest.java b/core/src/test/java/haveno/core/user/PreferencesTest.java index 365d54732b..0639ba11af 100644 --- a/core/src/test/java/haveno/core/user/PreferencesTest.java +++ b/core/src/test/java/haveno/core/user/PreferencesTest.java @@ -24,6 +24,7 @@ import haveno.core.locale.CountryUtil; import haveno.core.locale.CryptoCurrency; import haveno.core.locale.CurrencyUtil; import haveno.core.locale.TraditionalCurrency; +import haveno.core.xmr.nodes.XmrNodes; import haveno.core.locale.GlobalSettings; import haveno.core.locale.Res; import javafx.collections.ObservableList; @@ -45,6 +46,7 @@ public class PreferencesTest { private Preferences preferences; private PersistenceManager persistenceManager; + private XmrNodes xmrNodes; @BeforeEach public void setUp() { @@ -53,12 +55,12 @@ public class PreferencesTest { GlobalSettings.setLocale(en_US); Res.setBaseCurrencyCode("XMR"); Res.setBaseCurrencyName("Monero"); - persistenceManager = mock(PersistenceManager.class); Config config = new Config(); - XmrLocalNode xmrLocalNode = new XmrLocalNode(config, preferences); preferences = new Preferences( persistenceManager, config, null, null); + xmrNodes = new XmrNodes(); + XmrLocalNode xmrLocalNode = new XmrLocalNode(config, preferences, xmrNodes); } @Test