]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
settings: fix proxy switch crash
authortobtoht <tob@featherwallet.org>
Thu, 2 May 2024 23:26:03 +0000 (01:26 +0200)
committertobtoht <tob@featherwallet.org>
Thu, 2 May 2024 23:26:03 +0000 (01:26 +0200)
src/MainWindow.cpp
src/MainWindow.h
src/SettingsDialog.cpp
src/utils/nodes.h

index e612b5b232b9849a83219bb8b371be54f075f441..7000fb5d5de4f7437221262623a288a62cd2624b 100644 (file)
@@ -89,9 +89,7 @@ MainWindow::MainWindow(WindowManager *windowManager, Wallet *wallet, QWidget *pa
     connect(m_windowManager, &WindowManager::websocketStatusChanged, this, &MainWindow::onWebsocketStatusChanged);
     this->onWebsocketStatusChanged(!conf()->get(Config::disableWebsocket).toBool());
 
-    connect(m_windowManager, &WindowManager::proxySettingsChanged, [this]{
-        this->onProxySettingsChanged();
-    });
+    connect(m_windowManager, &WindowManager::proxySettingsChanged, this, &MainWindow::onProxySettingsChangedConnect);
     connect(m_windowManager, &WindowManager::updateBalance, m_wallet, &Wallet::updateBalance);
     connect(m_windowManager, &WindowManager::offlineMode, this, &MainWindow::onOfflineMode);
     connect(m_windowManager, &WindowManager::manualFeeSelectionEnabled, this, &MainWindow::onManualFeeSelectionEnabled);
@@ -183,7 +181,7 @@ void MainWindow::initStatusBar() {
     m_statusBtnProxySettings = new StatusBarButton(icons()->icon("tor_logo_disabled.png"), "Proxy settings", this);
     connect(m_statusBtnProxySettings, &StatusBarButton::clicked, this, &MainWindow::menuProxySettingsClicked);
     this->statusBar()->addPermanentWidget(m_statusBtnProxySettings);
-    this->onProxySettingsChanged(false);
+    this->onProxySettingsChanged();
 
     m_statusBtnHwDevice = new StatusBarButton(this->hardwareDevicePairedIcon(), this->getHardwareDevice(), this);
     connect(m_statusBtnHwDevice, &StatusBarButton::clicked, this, &MainWindow::menuHwDeviceClicked);
@@ -651,11 +649,12 @@ void MainWindow::onWebsocketStatusChanged(bool enabled) {
     m_sendWidget->setWebsocketEnabled(enabled);
 }
 
-void MainWindow::onProxySettingsChanged(bool connect) {
-    if (connect) {
-        m_nodes->connectToNode();
-    }
+void MainWindow::onProxySettingsChangedConnect() {
+    m_nodes->connectToNode();
+    this->onProxySettingsChanged();
+}
 
+void MainWindow::onProxySettingsChanged() {
     int proxy = conf()->get(Config::proxy).toInt();
 
     if (proxy == Config::Proxy::Tor) {
index f5786b0b8e303a26c8b67f14957b7f73fec7e89e..ac9251eccdcfdc083d5d81e79bb7955633633892 100644 (file)
@@ -165,7 +165,8 @@ private slots:
     void tryStoreWallet();
     void onWebsocketStatusChanged(bool enabled);
     void showUpdateNotification();
-    void onProxySettingsChanged(bool connect = true);
+    void onProxySettingsChangedConnect();
+    void onProxySettingsChanged();
     void onOfflineMode(bool offline);
     void onManualFeeSelectionEnabled(bool enabled);
     void onSubtractFeeFromAmountEnabled(bool enabled);
index 37e69e41b7602b0218343f88ea8d81e13cd5f5d7..9a84193743f67d55414c5ce411754e7bc8fdbd4d 100644 (file)
@@ -378,6 +378,7 @@ void Settings::onProxySettingsChanged() {
     ui->closeButton->addButton(QDialogButtonBox::Apply);
     connect(ui->closeButton->button(QDialogButtonBox::Apply), &QAbstractButton::clicked, [this](){
         ui->proxyWidget->setProxySettings();
+        m_nodes->updateModels();
         emit proxySettingsChanged();
         ui->closeButton->removeButton(ui->closeButton->button(QDialogButtonBox::Apply));
     });
index c9166e024b27b49a37df6e6d9a34cdf4c9dfe9f0..27c289779e625ccf2f59cd56efafc960f532ff79 100644 (file)
@@ -134,7 +134,6 @@ struct FeatherNode {
     }
 };
 
-class AppContext;
 class Nodes : public QObject {
     Q_OBJECT
 
@@ -144,6 +143,7 @@ public:
 
     void loadConfig();
     void allowConnection();
+    void updateModels();
 
     NodeSource source();
     FeatherNode connection();
@@ -190,7 +190,6 @@ private:
     bool useI2PNodes();
     bool useSocks5Proxy(const FeatherNode &node);
 
-    void updateModels();
     void resetLocalState();
     void exhausted();
     int modeHeight(const QList<FeatherNode> &nodes);