]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
workflow and sync fixes
authorgg <chown_tee@proton.me>
Thu, 15 Jan 2026 12:33:50 +0000 (07:33 -0500)
committergg <chown_tee@proton.me>
Thu, 15 Jan 2026 12:33:50 +0000 (07:33 -0500)
.github/workflows/build.yml
src/MainWindow.cpp
src/libwalletqt/Wallet.cpp

index ab79291ab4b3447cdec0bb0a8cfcaccb367481e6..625a6b7abeee4deb8f50bcc36bca708f00cbfd3c 100644 (file)
@@ -76,7 +76,7 @@ jobs:
           apt -y install wget gpg software-properties-common
 
           # 2. Add Kitware repository (for modern CMake > 3.20)
-          wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
+          wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
           echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
           apt update
 
index ec6cc027eb44bca702fc04885c3431b4af3033f4..ed2fe5b14930e469c9c32fc30d2dc853a6e9c497 100644 (file)
@@ -663,9 +663,9 @@ void MainWindow::initWalletContext() {
         this->onConnectionStatusChanged(status);
 
         if (status == Wallet::ConnectionStatus_Disconnected) {
-             QTimer::singleShot(2000, m_nodes, [this]{ m_nodes->autoConnect(); });
+            QTimer::singleShot(2000, m_nodes, [this]{ m_nodes->autoConnect(); });
         } else {
-             m_nodes->autoConnect();
+            m_nodes->autoConnect();
         }
 
         this->updateBalance();
index d62ed9cf63697f5b2738f3c751639b36da6820bb..b8fbed381ebbb44d962b4b5cdc6519b83063f94e 100644 (file)
@@ -506,18 +506,27 @@ void Wallet::startRefreshThread()
                 const auto elapsed = now - last;
                 if (elapsed >= std::chrono::seconds(m_refreshInterval) || m_refreshNow)
                 {
-                    m_lastRefreshTime = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now().time_since_epoch()).count();
-                    last = std::chrono::steady_clock::now();
-
-                    qDebug() << "Refresher: Interval met. Elapsed:" << std::chrono::duration_cast<std::chrono::seconds>(elapsed).count()
-                             << "Interval:" << m_refreshInterval << "RefreshNow:" << m_refreshNow;
-                    m_refreshNow = false;
-
+                    auto loopStartTime = std::chrono::time_point_cast<std::chrono::microseconds>(std::chrono::steady_clock::now());
                     // get daemonHeight and targetHeight
                     // daemonHeight and targetHeight will be 0 if call to get_info fails
                     quint64 daemonHeight = m_walletImpl->daemonBlockChainHeight();
                     bool success = daemonHeight > 0;
 
+                    if (success) {
+                        m_lastRefreshTime = loopStartTime.time_since_epoch().count();
+                        last = loopStartTime;
+                    } else {
+                        // If sync failed, retry in 10 seconds (or immediately if interval < 10s)
+                        auto retryDelay = std::min(std::chrono::seconds(m_refreshInterval), std::chrono::seconds(10));
+                        auto nextTime = loopStartTime - std::chrono::seconds(m_refreshInterval) + retryDelay;
+                        m_lastRefreshTime = nextTime.time_since_epoch().count();
+                        last = nextTime;
+                    }
+
+                    qDebug() << "Refresher: Interval met. Elapsed:" << std::chrono::duration_cast<std::chrono::seconds>(elapsed).count()
+                             << "Interval:" << m_refreshInterval << "RefreshNow:" << m_refreshNow;
+
+
                     quint64 targetHeight = 0;
                     if (success) {
                         targetHeight = m_walletImpl->daemonBlockChainTargetHeight();