import SwiftUI import SFSafeSymbols private let df: DateFormatter = { let df = DateFormatter() df.dateStyle = .short df.timeStyle = .short df.doesRelativeDateFormatting = true return df }() struct HistoryItemDetail: View { let item: HistoryItem let history: HistoryManagerProtocol @Environment(\.dismiss) private var dismiss private var entryTime: String { df.string(from: item.requestDate) } var counterText: String { let sentCounter = item.request.id let startText = "\(sentCounter)" guard let rCounter = item.responseMessage?.id else { return startText } guard sentCounter + 1 != rCounter && sentCounter != rCounter else { return startText } return "\(sentCounter) -> \(rCounter)" } var body: some View { List { SettingsListTextItem( title: "Status", value: item.response.description) SettingsListTextItem( title: "Date", value: entryTime) SettingsListTextItem( title: "Connection", value: item.usedLocalConnection ? "Local" : "Remote") SettingsListTextItem( title: "Device ID", value: "\(item.request.deviceId!)") SettingsListTextItem( title: "Message Counter", value: counterText) SettingsListTextItem( title: "Round Trip Time", value: "\(Int(item.roundTripTime * 1000)) ms") if let offset = item.clockOffset { SettingsListTextItem( title: "Clock offset", value: "\(offset) seconds") } Button { delete(item: item) } label: { HStack { Spacer() Label("Delete", systemSymbol: .trash) Spacer() } } .listRowBackground( RoundedRectangle(cornerSize: CGSize(width: 8, height: 8)) .fill(.red) ) .foregroundColor(.white) }.navigationTitle("Details") } private func delete(item: HistoryItem) { guard history.delete(item: item) else { return } dismiss() } } struct HistoryItemDetail_Previews: PreviewProvider { static var previews: some View { HistoryItemDetail(item: .mock, history: HistoryManagerMock()) } }