taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 8f3d5473891677535960c3328c166fe41ef17fe4
parent 8767f5abddd2f4eb7e8635c2907d71f1b1abc87f
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 26 Oct 2023 07:38:03 +0200

Accessibility: QR, Date

Diffstat:
MTalerWallet1/Helper/TalerDater.swift | 16++++++++++++----
MTalerWallet1/Views/Balances/BalanceRowView.swift | 2+-
MTalerWallet1/Views/HelperViews/QRCodeDetailView.swift | 1+
MTalerWallet1/Views/Settings/Pending/PendingOpView.swift | 2+-
MTalerWallet1/Views/Transactions/TransactionDetailView.swift | 20+++++++++++++++++++-
MTalerWallet1/Views/Transactions/TransactionRowView.swift | 2+-
6 files changed, 35 insertions(+), 8 deletions(-)

diff --git a/TalerWallet1/Helper/TalerDater.swift b/TalerWallet1/Helper/TalerDater.swift @@ -54,21 +54,29 @@ public class TalerDater: DateFormatter { } } +// public static func date(from: Timestamp) -> Date { +// let milliseconds = try from.milliseconds() +// let date = Date(milliseconds: milliseconds) +// return date +// } + /// converts a timestamp into a formatted date string - public static func dateString(from: Timestamp, relative: Bool = false) -> String { + public static func dateString(from: Timestamp, relative: Bool = false) -> (String, Date?) { do { let milliseconds = try from.milliseconds() let date = Date(milliseconds: milliseconds) +// let date = date(from: from) if relative { let now = Date.now let timeInterval = now.timeIntervalSince(date) if let relativeDate = relativeDate(from: timeInterval) { - return relativeDate + return (relativeDate, date) } } - return shared.string(from: date) + return (shared.string(from: date), date) } catch { // Never - return "Never" +// let never = LocalizedString("Never") + return ("Never", nil) } } diff --git a/TalerWallet1/Views/Balances/BalanceRowView.swift b/TalerWallet1/Views/Balances/BalanceRowView.swift @@ -104,7 +104,7 @@ struct BalanceRowView: View { HStack(spacing: HSPACING) { twoRowButtons } } } - .accessibilityElement(children: .combine) +// .accessibilityElement(children: .combine) } } } diff --git a/TalerWallet1/Views/HelperViews/QRCodeDetailView.swift b/TalerWallet1/Views/HelperViews/QRCodeDetailView.swift @@ -36,6 +36,7 @@ struct QRCodeDetailView: View { HStack { Spacer() QRGeneratorView(text: talerURI) + .accessibilityLabel("QR Code") Spacer() } .listRowSeparator(.hidden) diff --git a/TalerWallet1/Views/Settings/Pending/PendingOpView.swift b/TalerWallet1/Views/Settings/Pending/PendingOpView.swift @@ -28,7 +28,7 @@ struct PendingOpView: View { let isDue = "isDue" Toggle(isDue, isOn: $isDue) .disabled(true) - let dateString = TalerDater.dateString(from: pendingOp.timestampDue) + let (dateString, date) = TalerDater.dateString(from: pendingOp.timestampDue) Text(dateString) } .accessibilityFont(.body) diff --git a/TalerWallet1/Views/Transactions/TransactionDetailView.swift b/TalerWallet1/Views/Transactions/TransactionDetailView.swift @@ -45,6 +45,20 @@ struct TransactionDetailView: View { @State var transaction: Transaction = Transaction(dummyCurrency: DEMOCURRENCY) @State var viewId = UUID() + func accessibilityDate(_ date: Date?) -> String? { + if let date { + let dateString = DateFormatter.localizedString(from: date, + dateStyle: .short, + timeStyle: .none) + let hourComponents = Calendar.current.dateComponents([.hour, .minute], from: date) + if let timeString = DateComponentsFormatter.localizedString(from: hourComponents, unitsStyle: .spellOut) { + return dateString + ", " + timeString + } + return dateString + } + return nil + } + var body: some View { #if DEBUG let _ = Self._printChanges() @@ -52,7 +66,10 @@ struct TransactionDetailView: View { #endif let common = transaction.common let pending = transaction.isPending - let dateString = TalerDater.dateString(from: common.timestamp) + let locale = TalerDater.shared.locale + let (dateString, date) = TalerDater.dateString(from: common.timestamp) + let accessibilityDate = accessibilityDate(date) ?? + dateString let navTitle2 = transaction.localizedType Group { List { @@ -68,6 +85,7 @@ struct TransactionDetailView: View { } // Suspend + Resume buttons Text(dateString) .accessibilityFont(.body) + .accessibilityLabel(accessibilityDate) .foregroundColor(.secondary) .listRowSeparator(.hidden) HStack { diff --git a/TalerWallet1/Views/Transactions/TransactionRowView.swift b/TalerWallet1/Views/Transactions/TransactionRowView.swift @@ -32,7 +32,7 @@ struct TransactionRowView: View { let details = transaction.detailsToShow() let keys = details.keys - let dateString = TalerDater.dateString(from: common.timestamp, relative: true) + let (dateString, date) = TalerDater.dateString(from: common.timestamp, relative: true) let incoming = common.incoming() let foreColor = pending ? WalletColors().pendingColor(incoming) : done ? WalletColors().transactionColor(incoming)