From: gg Date: Wed, 14 Jan 2026 19:47:12 +0000 (-0500) Subject: track time since: last sync and last fiat update X-Git-Url: https://git.nutra.tk/v2?a=commitdiff_plain;h=5f3fbe5c506f39972183cd1ccad7aee09155d421;p=gamesguru%2Ffeather.git track time since: last sync and last fiat update --- diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 07a62f31..15ac104d 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -965,17 +965,26 @@ void MainWindow::onSyncStatus(quint64 height, quint64 target, bool daemonSync) { if (height >= (target - 1) && target > 0) { this->updateNetStats(); this->setStatusText(QString("Synchronized (%1)").arg(QLocale().toString(height))); + + // Persist sync state for next boot + conf()->set(Config::lastKnownNetworkHeight, static_cast(target)); + conf()->set(Config::lastSyncTimestamp, QDateTime::currentSecsSinceEpoch()); } else { QString type = daemonSync ? tr("Blockchain") : tr("Wallet"); QString blocksStr = QLocale().toString(blocksBehind); this->setStatusText(tr("%1 sync: %2 blocks behind").arg(type, blocksStr)); } - // Blocks behind info is shown in status bar text, tooltip just shows basic info - QString tooltip = tr("Wallet Height: %1 | Network Tip: %2\nLast updated: %3") + // Update tooltip with consistent format + QString tooltip = tr("Wallet Height: %1 | Network Tip: %2") .arg(QLocale().toString(height)) - .arg(QLocale().toString(target)) - .arg(m_lastSyncStatusUpdate.toString("HH:mm:ss")); + .arg(QLocale().toString(target)); + + tooltip += tr("\nLast updated: %1").arg(Utils::timeAgo(m_lastSyncStatusUpdate)); + + if (blocksBehind > 0) { + tooltip += tr("\n~%1 blocks behind").arg(QLocale().toString(blocksBehind)); + } qDebug() << "Setting Status Tooltip:" << tooltip; m_statusLabelStatus->setToolTip(tooltip); @@ -1046,6 +1055,11 @@ void MainWindow::onConnectionStatusChanged(int status) quint64 walletHeight = m_wallet->blockChainHeight(); quint64 targetHeight = m_wallet->daemonBlockChainTargetHeight(); + // Fall back to persisted network height if current is 0 + if (targetHeight == 0) { + targetHeight = conf()->get(Config::lastKnownNetworkHeight).toULongLong(); + } + QString tooltip; if (targetHeight > 0) { tooltip = tr("Wallet Height: %1 | Network Tip: %2") @@ -1055,11 +1069,19 @@ void MainWindow::onConnectionStatusChanged(int status) tooltip = tr("Wallet Height: %1").arg(QLocale().toString(walletHeight)); } - // Use lastSyncTime if valid, otherwise fall back to m_lastSyncStatusUpdate + // Use lastSyncTime, then m_lastSyncStatusUpdate, then persisted timestamp QDateTime lastSync = m_wallet->lastSyncTime().isValid() ? m_wallet->lastSyncTime() : m_lastSyncStatusUpdate; + // Fall back to persisted timestamp if still invalid + if (!lastSync.isValid()) { + qint64 persistedTimestamp = conf()->get(Config::lastSyncTimestamp).toLongLong(); + if (persistedTimestamp > 0) { + lastSync = QDateTime::fromSecsSinceEpoch(persistedTimestamp); + } + } + if (lastSync.isValid()) { qint64 secsSinceSync = lastSync.secsTo(QDateTime::currentDateTime()); quint64 blocksBehind = secsSinceSync / 120; // ~2 min per block diff --git a/src/utils/config.cpp b/src/utils/config.cpp index 3250b8b9..1ddb0284 100644 --- a/src/utils/config.cpp +++ b/src/utils/config.cpp @@ -81,6 +81,8 @@ static const QHash configStrings = { {Config::offlineMode, {QS("offlineMode"), false}}, {Config::syncPaused, {QS("syncPaused"), false}}, {Config::syncPausedAlsoDisconnectWebSocket, {QS("syncPausedAlsoDisconnectWebSocket"), false}}, + {Config::lastKnownNetworkHeight, {QS("lastKnownNetworkHeight"), 0}}, + {Config::lastSyncTimestamp, {QS("lastSyncTimestamp"), 0}}, // Transactions {Config::multiBroadcast, {QS("multiBroadcast"), true}}, diff --git a/src/utils/config.h b/src/utils/config.h index 462c2a5c..05aa2038 100644 --- a/src/utils/config.h +++ b/src/utils/config.h @@ -146,6 +146,8 @@ public: // Sync & data saver syncPaused, syncPausedAlsoDisconnectWebSocket, + lastKnownNetworkHeight, + lastSyncTimestamp, }; enum PrivacyLevel {