mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-10 23:50:10 -04:00
monero wallets switch to tor after initial sync by default
This commit is contained in:
parent
0620bf260e
commit
f19bc2ad4b
20 changed files with 276 additions and 129 deletions
|
@ -574,7 +574,7 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
splashP2PNetworkBusyAnimation.stop();
|
||||
showTorNetworkSettingsButton.setVisible(true);
|
||||
showTorNetworkSettingsButton.setManaged(true);
|
||||
if (model.getUseTorForXMR().get()) {
|
||||
if (model.getUseTorForXmr().get().isUseTorForXmr()) {
|
||||
// If using tor for XMR, hide the XMR status since tor is not working
|
||||
xmrSyncIndicator.setVisible(false);
|
||||
xmrSplashInfo.setVisible(false);
|
||||
|
|
|
@ -47,6 +47,7 @@ import haveno.core.provider.price.PriceFeedService;
|
|||
import haveno.core.trade.TradeManager;
|
||||
import haveno.core.user.DontShowAgainLookup;
|
||||
import haveno.core.user.Preferences;
|
||||
import haveno.core.user.Preferences.UseTorForXmr;
|
||||
import haveno.core.user.User;
|
||||
import haveno.core.xmr.wallet.XmrWalletService;
|
||||
import haveno.desktop.Navigation;
|
||||
|
@ -628,8 +629,8 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
|
|||
return havenoSetup.getXmrSplashSyncIconId();
|
||||
}
|
||||
|
||||
BooleanProperty getUseTorForXMR() {
|
||||
return havenoSetup.getUseTorForXMR();
|
||||
ObjectProperty<UseTorForXmr> getUseTorForXmr() {
|
||||
return havenoSetup.getUseTorForXmr();
|
||||
}
|
||||
|
||||
// P2P
|
||||
|
|
|
@ -73,7 +73,14 @@
|
|||
<AutoTooltipLabel fx:id="localhostXmrNodeInfoLabel" styleClass="small-text"/>
|
||||
</VBox>
|
||||
|
||||
<AutoTooltipCheckBox fx:id="useTorForXmrJCheckBox" GridPane.rowIndex="1"/>
|
||||
<VBox GridPane.rowIndex="1">
|
||||
<AutoTooltipLabel fx:id="useTorForXmrLabel" styleClass="small-text"/>
|
||||
<HBox spacing="10">
|
||||
<AutoTooltipRadioButton fx:id="useTorForXmrAfterSyncRadio"/>
|
||||
<AutoTooltipRadioButton fx:id="useTorForXmrOnRadio"/>
|
||||
<AutoTooltipRadioButton fx:id="useTorForXmrOffRadio"/>
|
||||
</HBox>
|
||||
</VBox>
|
||||
|
||||
<VBox GridPane.rowIndex="2">
|
||||
<AutoTooltipLabel fx:id="moneroNodesLabel" styleClass="small-text"/>
|
||||
|
|
|
@ -49,7 +49,6 @@ import javafx.collections.transformation.SortedList;
|
|||
import javafx.fxml.FXML;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.VPos;
|
||||
import javafx.scene.control.CheckBox;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.RadioButton;
|
||||
import javafx.scene.control.TableColumn;
|
||||
|
@ -75,7 +74,7 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
@FXML
|
||||
TitledGroupBg p2pHeader, btcHeader;
|
||||
@FXML
|
||||
Label xmrNodesLabel, moneroNodesLabel, localhostXmrNodeInfoLabel;
|
||||
Label useTorForXmrLabel, xmrNodesLabel, moneroNodesLabel, localhostXmrNodeInfoLabel;
|
||||
@FXML
|
||||
InputTextField xmrNodesInputTextField;
|
||||
@FXML
|
||||
|
@ -83,7 +82,7 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
@FXML
|
||||
Label p2PPeersLabel, moneroPeersLabel;
|
||||
@FXML
|
||||
CheckBox useTorForXmrJCheckBox;
|
||||
RadioButton useTorForXmrAfterSyncRadio, useTorForXmrOffRadio, useTorForXmrOnRadio;
|
||||
@FXML
|
||||
RadioButton useProvidedNodesRadio, useCustomNodesRadio, usePublicNodesRadio;
|
||||
@FXML
|
||||
|
@ -122,8 +121,11 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
private Subscription moneroBlockHeightSubscription;
|
||||
private Subscription nodeAddressSubscription;
|
||||
private ChangeListener<Boolean> xmrNodesInputTextFieldFocusListener;
|
||||
private ToggleGroup useTorForXmrToggleGroup;
|
||||
private ToggleGroup moneroPeersToggleGroup;
|
||||
private Preferences.UseTorForXmr selectedUseTorForXmr;
|
||||
private XmrNodes.MoneroNodesOption selectedMoneroNodesOption;
|
||||
private ChangeListener<Toggle> useTorForXmrToggleGroupListener;
|
||||
private ChangeListener<Toggle> moneroPeersToggleGroupListener;
|
||||
private ChangeListener<Filter> filterPropertyListener;
|
||||
|
||||
|
@ -156,7 +158,10 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
onionAddress.setPromptText(Res.get("settings.net.onionAddressLabel"));
|
||||
xmrNodesLabel.setText(Res.get("settings.net.xmrNodesLabel"));
|
||||
moneroPeersLabel.setText(Res.get("settings.net.moneroPeersLabel"));
|
||||
useTorForXmrJCheckBox.setText(Res.get("settings.net.useTorForXmrJLabel"));
|
||||
useTorForXmrLabel.setText(Res.get("settings.net.useTorForXmrJLabel"));
|
||||
useTorForXmrAfterSyncRadio.setText(Res.get("settings.net.useTorForXmrAfterSyncRadio"));
|
||||
useTorForXmrOffRadio.setText(Res.get("settings.net.useTorForXmrOffRadio"));
|
||||
useTorForXmrOnRadio.setText(Res.get("settings.net.useTorForXmrOnRadio"));
|
||||
moneroNodesLabel.setText(Res.get("settings.net.moneroNodesLabel"));
|
||||
moneroPeerAddressColumn.setGraphic(new AutoTooltipLabel(Res.get("settings.net.onionAddressColumn")));
|
||||
moneroPeerAddressColumn.getStyleClass().add("first-column");
|
||||
|
@ -208,6 +213,31 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
p2pPeersTableView.setPlaceholder(new AutoTooltipLabel(Res.get("table.placeholder.noData")));
|
||||
p2pPeersTableView.getSortOrder().add(creationDateColumn);
|
||||
creationDateColumn.setSortType(TableColumn.SortType.ASCENDING);
|
||||
|
||||
// use tor for xmr radio buttons
|
||||
|
||||
useTorForXmrToggleGroup = new ToggleGroup();
|
||||
useTorForXmrAfterSyncRadio.setToggleGroup(useTorForXmrToggleGroup);
|
||||
useTorForXmrOffRadio.setToggleGroup(useTorForXmrToggleGroup);
|
||||
useTorForXmrOnRadio.setToggleGroup(useTorForXmrToggleGroup);
|
||||
|
||||
useTorForXmrAfterSyncRadio.setUserData(Preferences.UseTorForXmr.AFTER_SYNC);
|
||||
useTorForXmrOffRadio.setUserData(Preferences.UseTorForXmr.OFF);
|
||||
useTorForXmrOnRadio.setUserData(Preferences.UseTorForXmr.ON);
|
||||
|
||||
selectedUseTorForXmr = Preferences.UseTorForXmr.values()[preferences.getUseTorForXmrOrdinal()];
|
||||
|
||||
selectUseTorForXmrToggle();
|
||||
onUseTorForXmrToggleSelected(false);
|
||||
|
||||
useTorForXmrToggleGroupListener = (observable, oldValue, newValue) -> {
|
||||
if (newValue != null) {
|
||||
selectedUseTorForXmr = (Preferences.UseTorForXmr) newValue.getUserData();
|
||||
onUseTorForXmrToggleSelected(true);
|
||||
}
|
||||
};
|
||||
|
||||
// monero nodes radio buttons
|
||||
|
||||
moneroPeersToggleGroup = new ToggleGroup();
|
||||
useProvidedNodesRadio.setToggleGroup(moneroPeersToggleGroup);
|
||||
|
@ -264,6 +294,7 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
|
||||
@Override
|
||||
public void activate() {
|
||||
useTorForXmrToggleGroup.selectedToggleProperty().addListener(useTorForXmrToggleGroupListener);
|
||||
moneroPeersToggleGroup.selectedToggleProperty().addListener(moneroPeersToggleGroupListener);
|
||||
|
||||
if (filterManager.getFilter() != null)
|
||||
|
@ -271,22 +302,6 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
|
||||
filterManager.filterProperty().addListener(filterPropertyListener);
|
||||
|
||||
useTorForXmrJCheckBox.setSelected(preferences.getUseTorForMonero());
|
||||
useTorForXmrJCheckBox.setOnAction(event -> {
|
||||
boolean selected = useTorForXmrJCheckBox.isSelected();
|
||||
if (selected != preferences.getUseTorForMonero()) {
|
||||
new Popup().information(Res.get("settings.net.needRestart"))
|
||||
.actionButtonText(Res.get("shared.applyAndShutDown"))
|
||||
.onAction(() -> {
|
||||
preferences.setUseTorForMonero(selected);
|
||||
UserThread.runAfter(HavenoApp.getShutDownHandler(), 500, TimeUnit.MILLISECONDS);
|
||||
})
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.onClose(() -> useTorForXmrJCheckBox.setSelected(!selected))
|
||||
.show();
|
||||
}
|
||||
});
|
||||
|
||||
rescanOutputsButton.setOnAction(event -> GUIUtil.rescanOutputs(preferences));
|
||||
|
||||
moneroPeersSubscription = EasyBind.subscribe(connectionManager.peerConnectionsProperty(),
|
||||
|
@ -328,11 +343,10 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
|
||||
@Override
|
||||
public void deactivate() {
|
||||
useTorForXmrToggleGroup.selectedToggleProperty().removeListener(useTorForXmrToggleGroupListener);
|
||||
moneroPeersToggleGroup.selectedToggleProperty().removeListener(moneroPeersToggleGroupListener);
|
||||
filterManager.filterProperty().removeListener(filterPropertyListener);
|
||||
|
||||
useTorForXmrJCheckBox.setOnAction(null);
|
||||
|
||||
if (nodeAddressSubscription != null)
|
||||
nodeAddressSubscription.unsubscribe();
|
||||
|
||||
|
@ -360,6 +374,21 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
return filterManager.getFilter() != null &&
|
||||
filterManager.getFilter().isPreventPublicXmrNetwork();
|
||||
}
|
||||
|
||||
private void selectUseTorForXmrToggle() {
|
||||
switch (selectedUseTorForXmr) {
|
||||
case OFF:
|
||||
useTorForXmrToggleGroup.selectToggle(useTorForXmrOffRadio);
|
||||
break;
|
||||
case ON:
|
||||
useTorForXmrToggleGroup.selectToggle(useTorForXmrOnRadio);
|
||||
break;
|
||||
default:
|
||||
case AFTER_SYNC:
|
||||
useTorForXmrToggleGroup.selectToggle(useTorForXmrAfterSyncRadio);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void selectMoneroPeersToggle() {
|
||||
switch (selectedMoneroNodesOption) {
|
||||
|
@ -383,10 +412,30 @@ public class NetworkSettingsView extends ActivatableView<GridPane, Void> {
|
|||
.useShutDownButton()
|
||||
.show();
|
||||
}
|
||||
|
||||
private void onUseTorForXmrToggleSelected(boolean calledFromUser) {
|
||||
Preferences.UseTorForXmr currentUseTorForXmr = Preferences.UseTorForXmr.values()[preferences.getUseTorForXmrOrdinal()];
|
||||
if (currentUseTorForXmr != selectedUseTorForXmr) {
|
||||
if (calledFromUser) {
|
||||
new Popup().information(Res.get("settings.net.needRestart"))
|
||||
.actionButtonText(Res.get("shared.applyAndShutDown"))
|
||||
.onAction(() -> {
|
||||
preferences.setUseTorForXmrOrdinal(selectedUseTorForXmr.ordinal());
|
||||
UserThread.runAfter(HavenoApp.getShutDownHandler(), 500, TimeUnit.MILLISECONDS);
|
||||
})
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.onClose(() -> {
|
||||
selectedUseTorForXmr = currentUseTorForXmr;
|
||||
selectUseTorForXmrToggle();
|
||||
})
|
||||
.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void onMoneroPeersToggleSelected(boolean calledFromUser) {
|
||||
boolean localMoneroNodeShouldBeUsed = localMoneroNode.shouldBeUsed();
|
||||
useTorForXmrJCheckBox.setDisable(localMoneroNodeShouldBeUsed);
|
||||
useTorForXmrLabel.setDisable(localMoneroNodeShouldBeUsed);
|
||||
moneroNodesLabel.setDisable(localMoneroNodeShouldBeUsed);
|
||||
xmrNodesLabel.setDisable(localMoneroNodeShouldBeUsed);
|
||||
xmrNodesInputTextField.setDisable(localMoneroNodeShouldBeUsed);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue