List transactions newest first on both chains

This commit is contained in:
2026-09-24 21:14:55 +08:00
parent 51dc007107
commit 2728bf161e
4 changed files with 77 additions and 10 deletions
@@ -8,6 +8,11 @@ struct TransactionDetailView: View {
var chain: Chain
var onDone: () -> Void
@State private var resolvedDate: Date?
@State private var isResolvingDate = false
private var displayedDate: Date? { record.timestamp ?? resolvedDate }
private var dateFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.dateStyle = .medium
@@ -59,8 +64,12 @@ struct TransactionDetailView: View {
Card {
VStack(alignment: .leading, spacing: 12) {
if let timestamp = record.timestamp {
DetailRow(label: "Date", value: dateFormatter.string(from: timestamp))
if let date = displayedDate {
DetailRow(label: "Date", value: dateFormatter.string(from: date))
} else if isResolvingDate {
DetailRow(label: "Date", value: "Looking up the block time…")
} else if let height = record.height, height > 0 {
DetailRow(label: "Block height", value: String(height))
}
if let fee = record.fee, !fee.isEmpty, record.direction == .outgoing {
DetailRow(label: "Network fee", value: "\(fee) \(symbol)")
@@ -108,6 +117,15 @@ struct TransactionDetailView: View {
}
}
.preferredColorScheme(.dark)
.task {
guard record.timestamp == nil,
chain == .xmr,
let height = record.height, height > 0,
resolvedDate == nil else { return }
isResolvingDate = true
resolvedDate = try? await MoneroService.shared.blockTimestamp(height: height)
isResolvingDate = false
}
}
}