Skip to content

Commit

Permalink
do not ignore local node if configured
Browse files Browse the repository at this point in the history
  • Loading branch information
woodser authored Mar 2, 2025
1 parent 48501a6 commit 31b0edc
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
23 changes: 21 additions & 2 deletions core/src/main/java/haveno/core/api/XmrLocalNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
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;
Expand Down Expand Up @@ -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<XmrLocalNodeListener> listeners = new ArrayList<>();

// required arguments
Expand All @@ -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
Expand Down Expand Up @@ -101,7 +107,20 @@ public boolean shouldBeUsed() {
* 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) {
Expand Down
6 changes: 4 additions & 2 deletions core/src/test/java/haveno/core/user/PreferencesTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
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;
Expand All @@ -45,6 +46,7 @@ public class PreferencesTest {

private Preferences preferences;
private PersistenceManager persistenceManager;
private XmrNodes xmrNodes;

@BeforeEach
public void setUp() {
Expand All @@ -53,12 +55,12 @@ public void setUp() {
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
Expand Down

0 comments on commit 31b0edc

Please sign in to comment.