]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
m_actionDisconnectNodeOnPause, m_actionDisconnectWebSocketOnPause
authorgg <chown_tee@proton.me>
Tue, 13 Jan 2026 01:25:52 +0000 (20:25 -0500)
committergg <chown_tee@proton.me>
Tue, 13 Jan 2026 01:26:27 +0000 (20:26 -0500)
src/MainWindow.cpp
src/MainWindow.h
src/utils/config.cpp
src/utils/config.h

index da6ea32f149f26e990f0bb76a9dd13dd5103e187..6d7316790e2ac2e5e3b16b58c57878e8d9e68efb 100644 (file)
@@ -202,6 +202,26 @@ void MainWindow::initStatusBar() {
     pauseSyncAction->setChecked(conf()->get(Config::syncPaused).toBool());
     m_statusLabelStatus->addAction(pauseSyncAction);
 
+    m_actionDisconnectNodeOnPause = new QAction(tr("Disconnect from Node"), this);
+    m_actionDisconnectNodeOnPause->setCheckable(true);
+    m_actionDisconnectNodeOnPause->setChecked(conf()->get(Config::syncPausedAlsoDisconnectNode).toBool());
+    m_actionDisconnectNodeOnPause->setEnabled(pauseSyncAction->isChecked());
+    m_statusLabelStatus->addAction(m_actionDisconnectNodeOnPause);
+
+    m_actionDisconnectWebSocketOnPause = new QAction(tr("Disconnect from WebSocket"), this);
+    m_actionDisconnectWebSocketOnPause->setCheckable(true);
+    m_actionDisconnectWebSocketOnPause->setChecked(conf()->get(Config::syncPausedAlsoDisconnectWebSocket).toBool());
+    m_actionDisconnectWebSocketOnPause->setEnabled(pauseSyncAction->isChecked());
+    m_statusLabelStatus->addAction(m_actionDisconnectWebSocketOnPause);
+
+    connect(m_actionDisconnectNodeOnPause, &QAction::toggled, this, [](bool checked){
+        conf()->set(Config::syncPausedAlsoDisconnectNode, checked);
+    });
+
+    connect(m_actionDisconnectWebSocketOnPause, &QAction::toggled, this, [](bool checked){
+        conf()->set(Config::syncPausedAlsoDisconnectWebSocket, checked);
+    });
+
     QAction *skipSyncAction = new QAction(tr("Skip Sync"), this);
     m_statusLabelStatus->addAction(skipSyncAction);
 
@@ -220,14 +240,27 @@ void MainWindow::initStatusBar() {
     connect(pauseSyncAction, &QAction::toggled, this, [this](bool checked) {
         qInfo() << "Pause Sync toggled. Checked =" << checked;
         conf()->set(Config::syncPaused, checked);
+
+        m_actionDisconnectNodeOnPause->setEnabled(checked);
+        m_actionDisconnectWebSocketOnPause->setEnabled(checked);
+
         if (m_wallet) {
             if (checked) {
                 m_wallet->setSyncPaused(true);
-                websocketNotifier()->websocketClient->stop();
+
+                if (m_actionDisconnectNodeOnPause->isChecked()) {
+                     m_nodes->disconnect();
+                }
+
+                if (m_actionDisconnectWebSocketOnPause->isChecked()) {
+                    websocketNotifier()->websocketClient->stop();
+                }
 
                 this->setPausedSyncStatus();
             } else {
+                // Ensure we reconnect everything when unpausing
                 m_wallet->setSyncPaused(false);
+                m_nodes->connectToNode();
                 websocketNotifier()->websocketClient->restart();
                 this->setStatusText(tr("Resuming sync..."));
             }
index ec78db9d4239e02132add748807cc1773b169792..08d03358f8861ead7dc849c046e27fd364992c05 100644 (file)
@@ -235,6 +235,8 @@ private:
 
     QPointer<QAction> m_clearRecentlyOpenAction;
     QPointer<QAction> m_updateNetworkInfoAction;
+    QPointer<QAction> m_actionDisconnectNodeOnPause;
+    QPointer<QAction> m_actionDisconnectWebSocketOnPause;
 
     QDateTime m_lastSyncStatusUpdate;
 
index 01848d4d2679e3a28b2d55ab5346e1a99d6eb5bd..71a66c29fd3c7af7c9f5e5da9f777b2bc6eecc04 100644 (file)
@@ -80,6 +80,8 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
         {Config::disableAutoRefresh, {QS("disableAutoRefresh"), false}},
         {Config::offlineMode, {QS("offlineMode"), false}},
         {Config::syncPaused, {QS("syncPaused"), false}},
+        {Config::syncPausedAlsoDisconnectNode, {QS("syncPausedAlsoDisconnectNode"), false}},
+        {Config::syncPausedAlsoDisconnectWebSocket, {QS("syncPausedAlsoDisconnectWebSocket"), false}},
 
         // Transactions
         {Config::multiBroadcast, {QS("multiBroadcast"), true}},
index beaa02d44a7cb9113314d357a8279d3cc6cc0d80..31ab8f60bea270da5ac531190b785e4115af44a0 100644 (file)
@@ -145,6 +145,8 @@ public:
 
         // Sync & data saver
         syncPaused,
+        syncPausedAlsoDisconnectNode,
+        syncPausedAlsoDisconnectWebSocket,
     };
 
     enum PrivacyLevel {