mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-10 23:50:10 -04:00
refactor monero connection initialization
re-prioritize default connections monero network status turns red on connection error remove popup on connection error remove popup on 0 monero peers which aren't reported increase main wallet max sync attempts on startup renames from btc to xmr
This commit is contained in:
parent
12b6585779
commit
473100620e
23 changed files with 283 additions and 325 deletions
|
@ -117,15 +117,15 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
private final Navigation navigation;
|
||||
private final ToggleGroup navButtons = new ToggleGroup();
|
||||
private ChangeListener<String> walletServiceErrorMsgListener;
|
||||
private ChangeListener<String> btcSyncIconIdListener;
|
||||
private ChangeListener<String> xmrSyncIconIdListener;
|
||||
private ChangeListener<String> splashP2PNetworkErrorMsgListener;
|
||||
private ChangeListener<String> splashP2PNetworkIconIdListener;
|
||||
private ChangeListener<Boolean> splashP2PNetworkVisibleListener;
|
||||
private BusyAnimation splashP2PNetworkBusyAnimation;
|
||||
private Label splashP2PNetworkLabel;
|
||||
private ProgressBar btcSyncIndicator, p2pNetworkProgressBar;
|
||||
private Label btcSplashInfo;
|
||||
private Popup p2PNetworkWarnMsgPopup, btcNetworkWarnMsgPopup;
|
||||
private ProgressBar xmrSyncIndicator, p2pNetworkProgressBar;
|
||||
private Label xmrSplashInfo;
|
||||
private Popup p2PNetworkWarnMsgPopup, xmrNetworkWarnMsgPopup;
|
||||
private final TorNetworkSettingsWindow torNetworkSettingsWindow;
|
||||
|
||||
public static StackPane getRootContainer() {
|
||||
|
@ -515,31 +515,31 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
logo.setId(Config.baseCurrencyNetwork() == BaseCurrencyNetwork.XMR_MAINNET ? "image-splash-logo" : "image-splash-testnet-logo");
|
||||
|
||||
// createBitcoinInfoBox
|
||||
btcSplashInfo = new AutoTooltipLabel();
|
||||
btcSplashInfo.textProperty().bind(model.getBtcInfo());
|
||||
xmrSplashInfo = new AutoTooltipLabel();
|
||||
xmrSplashInfo.textProperty().bind(model.getXmrInfo());
|
||||
walletServiceErrorMsgListener = (ov, oldValue, newValue) -> {
|
||||
btcSplashInfo.setId("splash-error-state-msg");
|
||||
btcSplashInfo.getStyleClass().add("error-text");
|
||||
xmrSplashInfo.setId("splash-error-state-msg");
|
||||
xmrSplashInfo.getStyleClass().add("error-text");
|
||||
};
|
||||
model.getWalletServiceErrorMsg().addListener(walletServiceErrorMsgListener);
|
||||
|
||||
btcSyncIndicator = new JFXProgressBar();
|
||||
btcSyncIndicator.setPrefWidth(305);
|
||||
btcSyncIndicator.progressProperty().bind(model.getCombinedSyncProgress());
|
||||
xmrSyncIndicator = new JFXProgressBar();
|
||||
xmrSyncIndicator.setPrefWidth(305);
|
||||
xmrSyncIndicator.progressProperty().bind(model.getCombinedSyncProgress());
|
||||
|
||||
ImageView btcSyncIcon = new ImageView();
|
||||
btcSyncIcon.setVisible(false);
|
||||
btcSyncIcon.setManaged(false);
|
||||
ImageView xmrSyncIcon = new ImageView();
|
||||
xmrSyncIcon.setVisible(false);
|
||||
xmrSyncIcon.setManaged(false);
|
||||
|
||||
btcSyncIconIdListener = (ov, oldValue, newValue) -> {
|
||||
btcSyncIcon.setId(newValue);
|
||||
btcSyncIcon.setVisible(true);
|
||||
btcSyncIcon.setManaged(true);
|
||||
xmrSyncIconIdListener = (ov, oldValue, newValue) -> {
|
||||
xmrSyncIcon.setId(newValue);
|
||||
xmrSyncIcon.setVisible(true);
|
||||
xmrSyncIcon.setManaged(true);
|
||||
|
||||
btcSyncIndicator.setVisible(false);
|
||||
btcSyncIndicator.setManaged(false);
|
||||
xmrSyncIndicator.setVisible(false);
|
||||
xmrSyncIndicator.setManaged(false);
|
||||
};
|
||||
model.getBtcSplashSyncIconId().addListener(btcSyncIconIdListener);
|
||||
model.getXmrSplashSyncIconId().addListener(xmrSyncIconIdListener);
|
||||
|
||||
|
||||
HBox blockchainSyncBox = new HBox();
|
||||
|
@ -547,7 +547,7 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
blockchainSyncBox.setAlignment(Pos.CENTER);
|
||||
blockchainSyncBox.setPadding(new Insets(40, 0, 0, 0));
|
||||
blockchainSyncBox.setPrefHeight(50);
|
||||
blockchainSyncBox.getChildren().addAll(btcSplashInfo, btcSyncIcon);
|
||||
blockchainSyncBox.getChildren().addAll(xmrSplashInfo, xmrSyncIcon);
|
||||
|
||||
|
||||
// create P2PNetworkBox
|
||||
|
@ -574,10 +574,10 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
splashP2PNetworkBusyAnimation.stop();
|
||||
showTorNetworkSettingsButton.setVisible(true);
|
||||
showTorNetworkSettingsButton.setManaged(true);
|
||||
if (model.getUseTorForBTC().get()) {
|
||||
// If using tor for BTC, hide the BTC status since tor is not working
|
||||
btcSyncIndicator.setVisible(false);
|
||||
btcSplashInfo.setVisible(false);
|
||||
if (model.getUseTorForXMR().get()) {
|
||||
// If using tor for XMR, hide the XMR status since tor is not working
|
||||
xmrSyncIndicator.setVisible(false);
|
||||
xmrSplashInfo.setVisible(false);
|
||||
}
|
||||
} else if (model.getSplashP2PNetworkAnimationVisible().get()) {
|
||||
splashP2PNetworkBusyAnimation.setDisable(false);
|
||||
|
@ -623,20 +623,20 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
splashP2PNetworkBox.setPrefHeight(40);
|
||||
splashP2PNetworkBox.getChildren().addAll(splashP2PNetworkLabel, splashP2PNetworkBusyAnimation, splashP2PNetworkIcon, showTorNetworkSettingsButton);
|
||||
|
||||
vBox.getChildren().addAll(logo, blockchainSyncBox, btcSyncIndicator, splashP2PNetworkBox);
|
||||
vBox.getChildren().addAll(logo, blockchainSyncBox, xmrSyncIndicator, splashP2PNetworkBox);
|
||||
return vBox;
|
||||
}
|
||||
|
||||
private void disposeSplashScreen() {
|
||||
model.getWalletServiceErrorMsg().removeListener(walletServiceErrorMsgListener);
|
||||
model.getBtcSplashSyncIconId().removeListener(btcSyncIconIdListener);
|
||||
model.getXmrSplashSyncIconId().removeListener(xmrSyncIconIdListener);
|
||||
|
||||
model.getP2pNetworkWarnMsg().removeListener(splashP2PNetworkErrorMsgListener);
|
||||
model.getP2PNetworkIconId().removeListener(splashP2PNetworkIconIdListener);
|
||||
model.getSplashP2PNetworkAnimationVisible().removeListener(splashP2PNetworkVisibleListener);
|
||||
|
||||
btcSplashInfo.textProperty().unbind();
|
||||
btcSyncIndicator.progressProperty().unbind();
|
||||
xmrSplashInfo.textProperty().unbind();
|
||||
xmrSyncIndicator.progressProperty().unbind();
|
||||
|
||||
splashP2PNetworkLabel.textProperty().unbind();
|
||||
|
||||
|
@ -653,12 +653,12 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
setRightAnchor(separator, 0d);
|
||||
setTopAnchor(separator, 0d);
|
||||
|
||||
// BTC
|
||||
Label btcInfoLabel = new AutoTooltipLabel();
|
||||
btcInfoLabel.setId("footer-pane");
|
||||
btcInfoLabel.textProperty().bind(model.getBtcInfo());
|
||||
setLeftAnchor(btcInfoLabel, 10d);
|
||||
setBottomAnchor(btcInfoLabel, 7d);
|
||||
// XMR
|
||||
Label xmrInfoLabel = new AutoTooltipLabel();
|
||||
xmrInfoLabel.setId("footer-pane");
|
||||
xmrInfoLabel.textProperty().bind(model.getXmrInfo());
|
||||
setLeftAnchor(xmrInfoLabel, 10d);
|
||||
setBottomAnchor(xmrInfoLabel, 7d);
|
||||
|
||||
// temporarily disabled due to high CPU usage (per issue #4649)
|
||||
//ProgressBar blockchainSyncIndicator = new JFXProgressBar(-1);
|
||||
|
@ -668,16 +668,16 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
|
||||
model.getWalletServiceErrorMsg().addListener((ov, oldValue, newValue) -> {
|
||||
if (newValue != null) {
|
||||
btcInfoLabel.setId("splash-error-state-msg");
|
||||
btcInfoLabel.getStyleClass().add("error-text");
|
||||
if (btcNetworkWarnMsgPopup == null) {
|
||||
btcNetworkWarnMsgPopup = new Popup().warning(newValue);
|
||||
btcNetworkWarnMsgPopup.show();
|
||||
}
|
||||
xmrInfoLabel.setId("splash-error-state-msg");
|
||||
xmrInfoLabel.getStyleClass().add("error-text");
|
||||
// if (xmrNetworkWarnMsgPopup == null) {
|
||||
// xmrNetworkWarnMsgPopup = new Popup().warning(newValue);
|
||||
// xmrNetworkWarnMsgPopup.show();
|
||||
// }
|
||||
} else {
|
||||
btcInfoLabel.setId("footer-pane");
|
||||
if (btcNetworkWarnMsgPopup != null)
|
||||
btcNetworkWarnMsgPopup.hide();
|
||||
xmrInfoLabel.setId("footer-pane");
|
||||
// if (xmrNetworkWarnMsgPopup != null)
|
||||
// xmrNetworkWarnMsgPopup.hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -787,7 +787,7 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
setRightAnchor(vBox, 53d);
|
||||
setBottomAnchor(vBox, 5d);
|
||||
|
||||
return new AnchorPane(separator, btcInfoLabel, versionBox, vBox, p2PNetworkStatusIcon, p2PNetworkIcon) {{
|
||||
return new AnchorPane(separator, xmrInfoLabel, versionBox, vBox, p2PNetworkStatusIcon, p2PNetworkIcon) {{
|
||||
setId("footer-pane");
|
||||
setMinHeight(30);
|
||||
setMaxHeight(30);
|
||||
|
|
|
@ -260,7 +260,6 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
|
|||
});
|
||||
|
||||
setupP2PNumPeersWatcher();
|
||||
setupXmrNumPeersWatcher();
|
||||
|
||||
marketPricePresentation.setup();
|
||||
accountPresentation.setup();
|
||||
|
@ -421,7 +420,7 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
|
|||
.warning(Res.get("popup.error.takeOfferRequestFailed", errorMessage))
|
||||
.show());
|
||||
|
||||
havenoSetup.getBtcSyncProgress().addListener((observable, oldValue, newValue) -> updateBtcSyncProgress());
|
||||
havenoSetup.getXmrSyncProgress().addListener((observable, oldValue, newValue) -> updateXmrSyncProgress());
|
||||
|
||||
havenoSetup.setFilterWarningHandler(warning -> new Popup().warning(warning).show());
|
||||
|
||||
|
@ -496,36 +495,6 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
|
|||
});
|
||||
}
|
||||
|
||||
private void setupXmrNumPeersWatcher() {
|
||||
connectionService.numPeersProperty().addListener((observable, oldValue, newValue) -> {
|
||||
int numPeers = (int) newValue;
|
||||
if ((int) oldValue > 0 && numPeers == 0) {
|
||||
if (checkNumberOfXmrPeersTimer != null)
|
||||
checkNumberOfXmrPeersTimer.stop();
|
||||
|
||||
checkNumberOfXmrPeersTimer = UserThread.runAfter(() -> {
|
||||
// check again numPeers
|
||||
if (connectionService.numPeersProperty().get() == 0) {
|
||||
if (localBitcoinNode.shouldBeUsed())
|
||||
getWalletServiceErrorMsg().set(
|
||||
Res.get("mainView.networkWarning.localhostBitcoinLost", // TODO: update error message for XMR
|
||||
Res.getBaseCurrencyName().toLowerCase()));
|
||||
else
|
||||
getWalletServiceErrorMsg().set(
|
||||
Res.get("mainView.networkWarning.allConnectionsLost",
|
||||
Res.getBaseCurrencyName().toLowerCase()));
|
||||
} else {
|
||||
getWalletServiceErrorMsg().set(null);
|
||||
}
|
||||
}, 5);
|
||||
} else if ((int) oldValue == 0 && numPeers > 0) {
|
||||
if (checkNumberOfXmrPeersTimer != null)
|
||||
checkNumberOfXmrPeersTimer.stop();
|
||||
getWalletServiceErrorMsg().set(null);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void showPopupIfInvalidBtcConfig() {
|
||||
preferences.setMoneroNodesOptionOrdinal(0);
|
||||
new Popup().warning(Res.get("settings.net.warn.invalidBtcConfig"))
|
||||
|
@ -564,10 +533,10 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
|
|||
}
|
||||
}
|
||||
|
||||
private void updateBtcSyncProgress() {
|
||||
final DoubleProperty btcSyncProgress = havenoSetup.getBtcSyncProgress();
|
||||
private void updateXmrSyncProgress() {
|
||||
final DoubleProperty xmrSyncProgress = havenoSetup.getXmrSyncProgress();
|
||||
|
||||
combinedSyncProgress.set(btcSyncProgress.doubleValue());
|
||||
combinedSyncProgress.set(xmrSyncProgress.doubleValue());
|
||||
}
|
||||
|
||||
private void setupInvalidOpenOffersHandler() {
|
||||
|
@ -637,9 +606,9 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
|
|||
|
||||
|
||||
// Wallet
|
||||
StringProperty getBtcInfo() {
|
||||
StringProperty getXmrInfo() {
|
||||
final StringProperty combinedInfo = new SimpleStringProperty();
|
||||
combinedInfo.bind(havenoSetup.getBtcInfo());
|
||||
combinedInfo.bind(havenoSetup.getXmrInfo());
|
||||
return combinedInfo;
|
||||
}
|
||||
|
||||
|
@ -657,12 +626,12 @@ public class MainViewModel implements ViewModel, HavenoSetup.HavenoSetupListener
|
|||
return havenoSetup.getWalletServiceErrorMsg();
|
||||
}
|
||||
|
||||
StringProperty getBtcSplashSyncIconId() {
|
||||
return havenoSetup.getBtcSplashSyncIconId();
|
||||
StringProperty getXmrSplashSyncIconId() {
|
||||
return havenoSetup.getXmrSplashSyncIconId();
|
||||
}
|
||||
|
||||
BooleanProperty getUseTorForBTC() {
|
||||
return havenoSetup.getUseTorForBTC();
|
||||
BooleanProperty getUseTorForXMR() {
|
||||
return havenoSetup.getUseTorForXMR();
|
||||
}
|
||||
|
||||
// P2P
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue