Add Last Heard time to node details

This commit is contained in:
Blake McAnally 2024-07-09 20:34:25 -05:00
parent cd1b25e0c5
commit 3bf443884c
3 changed files with 28 additions and 12 deletions

View file

@ -10797,6 +10797,9 @@
}
}
}
},
"Last heard" : {
},
"Latitude" : {
@ -21713,7 +21716,6 @@
},
"unknown" : {
"extractionState" : "migrated",
"localizations" : {
"de" : {
"stringUnit" : {

View file

@ -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")
}
}
}

View file

@ -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..<later).formatted(.components(style: .narrow))
Text(uptime)
.textSelection(.enabled)
.textSelection(.enabled)
}
}
if let metadata = node.metadata {
if let lastHeard = node.lastHeard {
HStack {
Label {
Text("firmware.version")
Text("Last heard")
} icon: {
Image(systemName: "memorychip")
Image(systemName: "clock.arrow.circlepath")
.symbolRenderingMode(.multicolor)
}
Spacer()
Text(metadata.firmwareVersion ?? "unknown".localized)
LastHeardText(lastHeard: lastHeard)
.textSelection(.enabled)
}
}
}