]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
fix sync 1000 block even when paused bug
authorgg <chown_tee@proton.me>
Mon, 12 Jan 2026 14:40:06 +0000 (09:40 -0500)
committergg <chown_tee@proton.me>
Mon, 12 Jan 2026 14:40:06 +0000 (09:40 -0500)
src/MainWindow.cpp
src/libwalletqt/Wallet.cpp
src/libwalletqt/Wallet.h

index 406a3e55e5581dd013da9e7f2cb37b10dcdece83..a67be3d4b4e92848a44064b3eaec0a4eeced1b5d 100644 (file)
@@ -219,11 +219,11 @@ void MainWindow::initStatusBar() {
         conf()->set(Config::syncPaused, checked);
         if (m_wallet) {
             if (checked) {
-                m_wallet->pauseRefresh();
-                
+                m_wallet->setSyncPaused(true);
+
                 this->setPausedSyncStatus();
             } else {
-                m_wallet->startRefresh();
+                m_wallet->setSyncPaused(false);
                 this->setStatusText(tr("Resuming sync..."));
             }
         }
@@ -816,11 +816,11 @@ void MainWindow::onWalletOpened() {
     this->updateTitle();
     m_nodes->allowConnection();
     if (!conf()->get(Config::disableAutoRefresh).toBool()) {
-        m_nodes->connectToNode();
         if (conf()->get(Config::syncPaused).toBool()) {
-            m_wallet->pauseRefresh();
+            m_wallet->setSyncPaused(true);
             this->setPausedSyncStatus();
         }
+        m_nodes->connectToNode();
     }
     m_updateBytes.start(250);
 
@@ -1712,7 +1712,7 @@ void MainWindow::onDeviceError(const QString &error, quint64 errorCode) {
         }
     }
     m_statusBtnHwDevice->setIcon(this->hardwareDevicePairedIcon());
-    m_wallet->startRefresh();
+    m_wallet->setSyncPaused(conf()->get(Config::syncPaused).toBool());
     m_showDeviceError = false;
 }
 
index 8f3c8a9330b4727f0a26a731a6e8aaa5d3cf7a8e..df7179cb69b6c5fbb634aec9199310d5594fbbd7 100644 (file)
@@ -431,7 +431,9 @@ void Wallet::initAsync(const QString &daemonAddress, bool trustedDaemon, quint64
 
         if (success) {
             qDebug() << "init async finished - starting refresh";
-            startRefresh();
+            if (!m_syncPaused) {
+                startRefresh();
+            }
         }
     });
     if (future.first)
@@ -568,6 +570,15 @@ void Wallet::syncStatusUpdated(quint64 height, quint64 target) {
     emit syncStatus(height, target, false);
 }
 
+void Wallet::setSyncPaused(bool paused) {
+    m_syncPaused = paused;
+    if (paused) {
+        pauseRefresh();
+    } else {
+        startRefresh();
+    }
+}
+
 void Wallet::skipToTip() {
     if (!m_wallet2)
         return;
index 2b3453107d02c7ec0981b521a63530e20cd3b645..4341efe2051bbd7aee05459b930eaa597d367dca 100644 (file)
@@ -229,6 +229,7 @@ public:
     quint64 daemonBlockChainTargetHeight() const;
 
     void syncStatusUpdated(quint64 height, quint64 target);
+    void setSyncPaused(bool paused);
     Q_INVOKABLE void skipToTip();
     Q_INVOKABLE void syncDateRange(const QDate &start, const QDate &end);
     void fullSync(); // Rescans from wallet creation height, not genesis block
@@ -534,6 +535,7 @@ private:
 
     std::atomic<quint64> m_stopHeight{0};
     std::atomic<bool> m_rangeSyncActive{false};
+    std::atomic<bool> m_syncPaused{false};
 };
 
 #endif // FEATHER_WALLET_H