From a550e6b6d91892be71a14f0730924a8735062df9 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Fri, 28 Mar 2025 09:43:54 -0700 Subject: [PATCH] Fix date regressions from #1089 --- Localizable.xcstrings | 4 ++++ Meshtastic/Extensions/Date.swift | 6 +++--- Meshtastic/Views/Nodes/Helpers/NodeDetail.swift | 10 ++++++---- Meshtastic/Views/Nodes/Helpers/NodeListItem.swift | 4 ++-- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 49e5ffe0..eb4cd488 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -22204,6 +22204,7 @@ } }, "OTA Updates are not supported on the this NRF Device." : { + "extractionState" : "stale", "localizations" : { "sr" : { "stringUnit" : { @@ -22218,6 +22219,9 @@ } } } + }, + "OTA Updates are not supported on this NRF Device." : { + }, "OTA Updates are not supported on your platform." : { "localizations" : { diff --git a/Meshtastic/Extensions/Date.swift b/Meshtastic/Extensions/Date.swift index 0736fc63..2cbd37b3 100644 --- a/Meshtastic/Extensions/Date.swift +++ b/Meshtastic/Extensions/Date.swift @@ -10,17 +10,17 @@ import Foundation extension Date { var lastHeard: String { - if timeIntervalSince1970 > 0 { + if self.timeIntervalSince1970 > 0 && self < Calendar.current.date(byAdding: .day, value: 1, to: Date())! { formatted() } else { - "unknown" + "unknown.age".localized } } func formattedDate(format: String) -> String { let dateformat = DateFormatter() dateformat.dateFormat = format - if self > Calendar.current.date(byAdding: .year, value: -5, to: Date())! { + if self.timeIntervalSince1970 > 0 && self < Calendar.current.date(byAdding: .day, value: 1, to: Date())! { return dateformat.string(from: self) } else { return "unknown.age".localized diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index d3439b3f..e48a9acc 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -163,7 +163,7 @@ struct NodeDetail: View { } } - if let firstHeard = node.firstHeard, firstHeard.timeIntervalSince1970 > 0 { + if let firstHeard = node.firstHeard, firstHeard.timeIntervalSince1970 > 0 && firstHeard < Calendar.current.date(byAdding: .year, value: 1, to: Date())! { HStack { Label { Text("First heard") @@ -184,7 +184,7 @@ struct NodeDetail: View { } } - if let lastHeard = node.lastHeard, lastHeard.timeIntervalSince1970 > 0 { + if let lastHeard = node.lastHeard, lastHeard.timeIntervalSince1970 > 0 && lastHeard < Calendar.current.date(byAdding: .year, value: 1, to: Date())! { HStack { Label { Text("Last heard") @@ -195,8 +195,10 @@ struct NodeDetail: View { Spacer() if dateFormatRelative, let text = Self.relativeFormatter.string(for: lastHeard) { - Text(text) - .textSelection(.enabled) + if lastHeard.formatted() != "unknown.age".localized { + Text(text) + .textSelection(.enabled) + } } else { Text(lastHeard.formatted()) .textSelection(.enabled) diff --git a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift index e57d99cc..cabfabc6 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeListItem.swift @@ -77,10 +77,10 @@ struct NodeListItem: View { imageColor: .green, text: "connected".localized) } - if node.lastHeard?.timeIntervalSince1970 ?? 0 > 0 { + if node.lastHeard?.timeIntervalSince1970 ?? 0 > 0 && node.lastHeard! < Calendar.current.date(byAdding: .year, value: 1, to: Date())!{ IconAndText(systemName: node.isOnline ? "checkmark.circle.fill" : "moon.circle.fill", imageColor: node.isOnline ? .green : .orange, - text: node.lastHeard?.formatted() ?? "unknown") + text: node.lastHeard?.formatted() ?? "unknown.age".localized) } let role = DeviceRoles(rawValue: Int(node.user?.role ?? 0)) IconAndText(systemName: role?.systemName ?? "figure",