]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
better balance (based on wallet status and sync pause status)
authorgg <chown_tee@proton.me>
Tue, 13 Jan 2026 07:15:47 +0000 (02:15 -0500)
committergg <chown_tee@proton.me>
Tue, 13 Jan 2026 07:41:53 +0000 (02:41 -0500)
src/MainWindow.cpp
src/utils/prices.cpp
src/utils/prices.h

index 314c2a7bd47c1f22c66c1a61b2e4bfd8aea00f81..1b5a0d89e8f371f86b446c55a49f8ad61c643fcc 100644 (file)
@@ -910,8 +910,17 @@ void MainWindow::onBalanceUpdated(quint64 balance, quint64 spendable) {
     if (conf()->get(Config::balanceShowFiat).toBool() && !hide) {
         QString fiatCurrency = conf()->get(Config::preferredFiatCurrency).toString();
         double balanceFiatAmount = appData()->prices.convert("XMR", fiatCurrency, balance / constants::cdiv);
-        if (balance > 0 && balanceFiatAmount == 0.0) {
-            suffixStr += " (unknown)";
+        bool isCacheFresh = appData()->prices.lastUpdateTime.isValid() &&
+                            appData()->prices.lastUpdateTime.secsTo(QDateTime::currentDateTime()) < 3600;
+
+        if (balance > 0 && (balanceFiatAmount == 0.0 || !isCacheFresh)) {
+            if (conf()->get(Config::offlineMode).toBool() || m_wallet->connectionStatus() == Wallet::ConnectionStatus_Disconnected) {
+                suffixStr += " (offline)";
+            } else if (!appData()->prices.markets.contains("XMR")) {
+                suffixStr += " (connecting)";
+            } else {
+                suffixStr += " (unknown)";
+            }
         } else {
             suffixStr += QString(" (%1)").arg(Utils::amountToCurrencyString(balanceFiatAmount, fiatCurrency));
         }
index 10ac77f1e2a985cf13ddbaf965a210f390bba516..ccd283c80ba957dd48097f4b682f5dc51291db8d 100644 (file)
@@ -31,6 +31,7 @@ void Prices::cryptoPricesReceived(const QJsonArray &data) {
         this->markets.insert(ms.symbol.toUpper(), ms);
     }
 
+    this->lastUpdateTime = QDateTime::currentDateTime();
     emit cryptoPricesUpdated();
 }
 
index 8972c0e97f72ac93f7b4f29ebccde3cf2f3680d2..afee8b61be9b5618a04b536b5f1923b2d7b3fdc0 100644 (file)
@@ -5,6 +5,7 @@
 #define FEATHER_PRICES_H
 
 #include <QObject>
+#include <QDateTime>
 
 #include "utils/Utils.h"
 
@@ -24,6 +25,7 @@ public:
     explicit Prices(QObject *parent = nullptr);
     QMap<QString, double> rates;
     QMap<QString, marketStruct> markets;
+    QDateTime lastUpdateTime;
 
 public slots:
     void cryptoPricesReceived(const QJsonArray &data);