Sesame-iOS/Sesame-Watch Watch App/HistoryItemDetail.swift
2023-08-14 10:39:29 +02:00

91 lines
2.5 KiB
Swift

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())
}
}