From 3bf443884ca0297fc85632181081e84164c09741 Mon Sep 17 00:00:00 2001 From: Blake McAnally Date: Tue, 9 Jul 2024 20:34:25 -0500 Subject: [PATCH] Add Last Heard time to node details --- Localizable.xcstrings | 4 ++- Meshtastic/Views/Helpers/LastHeardText.swift | 7 ++--- .../Views/Nodes/Helpers/NodeDetail.swift | 29 ++++++++++++++----- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 0bda8ad8..3bc72cef 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -10797,6 +10797,9 @@ } } } + }, + "Last heard" : { + }, "Latitude" : { @@ -21713,7 +21716,6 @@ }, "unknown" : { - "extractionState" : "migrated", "localizations" : { "de" : { "stringUnit" : { diff --git a/Meshtastic/Views/Helpers/LastHeardText.swift b/Meshtastic/Views/Helpers/LastHeardText.swift index 4d5deba4..8766f800 100644 --- a/Meshtastic/Views/Helpers/LastHeardText.swift +++ b/Meshtastic/Views/Helpers/LastHeardText.swift @@ -7,7 +7,6 @@ import SwiftUI // struct LastHeardText: View { var lastHeard: Date? - let sixMonthsAgo = Calendar.current.date(byAdding: .month, value: -6, to: Date()) static let formatter: RelativeDateTimeFormatter = { let formatter = RelativeDateTimeFormatter() @@ -16,10 +15,10 @@ struct LastHeardText: View { }() var body: some View { - if lastHeard != nil && lastHeard! >= sixMonthsAgo! { - Text(lastHeard?.formatted() ?? "unknown.age".localized) + if let lastHeard, lastHeard.timeIntervalSince1970 > 0 { + Text(lastHeard.formatted()) } else { - Text("unknown.age") + Text("unknown") } } } diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index 0f197e77..8779695c 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -18,11 +18,11 @@ struct NodeDetail: View { // The node the device is currently connected to var connectedNode: NodeInfoEntity? - + // The node information being displayed on the detail screen @ObservedObject var node: NodeInfoEntity - + var columnVisibility = NavigationSplitViewVisibility.all var favoriteNodeAction: some View { @@ -96,6 +96,20 @@ struct NodeDetail: View { .textSelection(.enabled) } + if let metadata = node.metadata { + HStack { + Label { + Text("firmware.version") + } icon: { + Image(systemName: "memorychip") + .symbolRenderingMode(.multicolor) + } + Spacer() + + Text(metadata.firmwareVersion ?? "unknown".localized) + } + } + if let dm = node.telemetries?.filtered(using: NSPredicate(format: "metricsType == 0")).lastObject as? TelemetryEntity, dm.uptimeSeconds > 0 { HStack { Label { @@ -111,21 +125,22 @@ struct NodeDetail: View { let later = now + TimeInterval(dm.uptimeSeconds) let uptime = (now..