From 6dd7d60b3c7100c11bd306ac45890f133f113b7b Mon Sep 17 00:00:00 2001 From: Blake McAnally Date: Tue, 9 Jul 2024 21:14:48 -0500 Subject: [PATCH 1/2] revert the last heard text changes on the list view, since that impacts performace --- Meshtastic/Views/Helpers/LastHeardText.swift | 10 ++-------- Meshtastic/Views/Nodes/Helpers/NodeDetail.swift | 13 +++++++++---- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Meshtastic/Views/Helpers/LastHeardText.swift b/Meshtastic/Views/Helpers/LastHeardText.swift index f34a0ec1..5981d9c2 100644 --- a/Meshtastic/Views/Helpers/LastHeardText.swift +++ b/Meshtastic/Views/Helpers/LastHeardText.swift @@ -8,15 +8,9 @@ import SwiftUI struct LastHeardText: View { var lastHeard: Date? - static let formatter: RelativeDateTimeFormatter = { - let formatter = RelativeDateTimeFormatter() - formatter.unitsStyle = .full - return formatter - }() - var body: some View { - if let lastHeard, lastHeard.timeIntervalSince1970 > 0, let text = Self.formatter.string(for: lastHeard) { - Text(text) + if let lastHeard, lastHeard.timeIntervalSince1970 > 0 { + Text(lastHeard.formatted()) } else { Text("unknown") } diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index aaad49c6..91b1c95d 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -10,6 +10,11 @@ import CoreLocation import OSLog struct NodeDetail: View { + private static let relativeFormatter: RelativeDateTimeFormatter = { + let formatter = RelativeDateTimeFormatter() + formatter.unitsStyle = .full + return formatter + }() @Environment(\.managedObjectContext) var context @EnvironmentObject var bleManager: BLEManager @@ -129,7 +134,7 @@ struct NodeDetail: View { } } - if let firstHeard = node.firstHeard { + if let firstHeard = node.firstHeard, let text = Self.relativeFormatter.string(for: firstHeard) { HStack { Label { Text("First heard") @@ -139,12 +144,12 @@ struct NodeDetail: View { } Spacer() - LastHeardText(lastHeard: firstHeard) + Text(text) .textSelection(.enabled) } } - if let lastHeard = node.lastHeard { + if let lastHeard = node.lastHeard, let text = Self.relativeFormatter.string(for: lastHeard) { HStack { Label { Text("Last heard") @@ -154,7 +159,7 @@ struct NodeDetail: View { } Spacer() - LastHeardText(lastHeard: lastHeard) + Text(text) .textSelection(.enabled) } } From 8bd6ebc507605dbdf2eb6121c927efdf42cf3b72 Mon Sep 17 00:00:00 2001 From: Blake McAnally Date: Tue, 9 Jul 2024 21:24:25 -0500 Subject: [PATCH 2/2] add tap gesture to toggle between date formatting styles --- .../Views/Nodes/Helpers/NodeDetail.swift | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index 91b1c95d..a9f3aa8e 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -20,6 +20,7 @@ struct NodeDetail: View { @EnvironmentObject var bleManager: BLEManager @State private var showingShutdownConfirm: Bool = false @State private var showingRebootConfirm: Bool = false + @State private var dateFormatRelative: Bool = true // The node the device is currently connected to var connectedNode: NodeInfoEntity? @@ -134,7 +135,7 @@ struct NodeDetail: View { } } - if let firstHeard = node.firstHeard, let text = Self.relativeFormatter.string(for: firstHeard) { + if let firstHeard = node.firstHeard { HStack { Label { Text("First heard") @@ -143,13 +144,19 @@ struct NodeDetail: View { .symbolRenderingMode(.multicolor) } Spacer() - - Text(text) - .textSelection(.enabled) + if dateFormatRelative, let text = Self.relativeFormatter.string(for: firstHeard) { + Text(text) + .textSelection(.enabled) + } else { + Text(firstHeard.formatted()) + .textSelection(.enabled) + } + }.onTapGesture { + dateFormatRelative.toggle() } } - if let lastHeard = node.lastHeard, let text = Self.relativeFormatter.string(for: lastHeard) { + if let lastHeard = node.lastHeard { HStack { Label { Text("Last heard") @@ -159,8 +166,15 @@ struct NodeDetail: View { } Spacer() - Text(text) - .textSelection(.enabled) + if dateFormatRelative, let text = Self.relativeFormatter.string(for: lastHeard) { + Text(text) + .textSelection(.enabled) + } else { + Text(lastHeard.formatted()) + .textSelection(.enabled) + } + }.onTapGesture { + dateFormatRelative.toggle() } } }