taler-ios

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

commit 81a04625c9d1d1cd5bc51d0aa72250520d7f8f93
parent d92244cfa01df334e087c51e0ab61a9a3baa4e89
Author: Marc Stibane <marc@taler.net>
Date:   Tue, 22 Apr 2025 11:13:46 +0200

TalerTransaction

Diffstat:
MTalerWallet1/Model/Model+Transactions.swift | 10+++++-----
MTalerWallet1/Model/Transaction.swift | 4++--
MTalerWallet1/Model/WalletModel.swift | 4++--
MTalerWallet1/Views/Actions/Banking/ManualWithdrawDone.swift | 2+-
MTalerWallet1/Views/Actions/Peer2peer/P2PReadyV.swift | 2+-
MTalerWallet1/Views/Balances/BalancesPendingRowV.swift | 4++--
MTalerWallet1/Views/Balances/BalancesSectionView.swift | 6+++---
MTalerWallet1/Views/HelperViews/BarGraph.swift | 8++++----
MTalerWallet1/Views/Sheets/Payment/PaymentDone.swift | 2+-
MTalerWallet1/Views/Sheets/Refund/RefundURIView.swift | 2+-
MTalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift | 2+-
MTalerWallet1/Views/Transactions/TransactionRowView.swift | 8++++----
MTalerWallet1/Views/Transactions/TransactionSummaryV.swift | 22+++++++++++-----------
MTalerWallet1/Views/Transactions/TransactionsListView.swift | 6+++---
14 files changed, 41 insertions(+), 41 deletions(-)

diff --git a/TalerWallet1/Model/Model+Transactions.swift b/TalerWallet1/Model/Model+Transactions.swift @@ -12,12 +12,12 @@ fileprivate let ASYNCDELAY: UInt = 0 //set e.g to 6 or 9 seconds for debugging // MARK: - extension WalletModel { - static func completedTransactions(_ transactions: [Transaction]) -> [Transaction] { + static func completedTransactions(_ transactions: [TalerTransaction]) -> [TalerTransaction] { transactions.filter { transaction in !transaction.isPending } } - static func pendingTransactions(_ transactions: [Transaction]) -> [Transaction] { + static func pendingTransactions(_ transactions: [TalerTransaction]) -> [TalerTransaction] { transactions.filter { transaction in transaction.isPending } @@ -45,7 +45,7 @@ fileprivate struct GetTransactions: WalletBackendFormattedRequest { } struct Response: Decodable { // list of transactions - var transactions: [Transaction] + var transactions: [TalerTransaction] } } enum TransactionStateFilter: String, Codable { @@ -82,7 +82,7 @@ fileprivate struct GetTransactionsV2: WalletBackendFormattedRequest { } struct Response: Decodable { // list of transactions - var transactions: [Transaction] + var transactions: [TalerTransaction] } } /// A request to abort a wallet transaction by ID. @@ -150,7 +150,7 @@ extension WalletModel { offset: TransactionOffset? = nil, includeRefreshes: Bool = false, viewHandles: Bool = false) - async throws -> [Transaction] { + async throws -> [TalerTransaction] { let request = GetTransactionsV2(scope: scope, filterByState: filterByState, limit: limit, diff --git a/TalerWallet1/Model/Transaction.swift b/TalerWallet1/Model/Transaction.swift @@ -575,7 +575,7 @@ struct DummyTransaction : Sendable { var common: TransactionCommon } // MARK: - Transaction -enum Transaction: Decodable, Hashable, Identifiable, Sendable { +enum TalerTransaction: Decodable, Hashable, Identifiable, Sendable { case dummy (DummyTransaction) case withdrawal (WithdrawalTransaction) case deposit (DepositTransaction) @@ -651,7 +651,7 @@ enum Transaction: Decodable, Hashable, Identifiable, Sendable { common.localizedTypePast(common.type) } - static func == (lhs: Transaction, rhs: Transaction) -> Bool { + static func == (lhs: TalerTransaction, rhs: TalerTransaction) -> Bool { return (lhs.id == rhs.id) && (lhs.common.txState == rhs.common.txState) } diff --git a/TalerWallet1/Model/WalletModel.swift b/TalerWallet1/Model/WalletModel.swift @@ -186,7 +186,7 @@ extension WalletModel { // MARK: - /// A request to get a wallet transaction by ID. fileprivate struct GetTransactionById: WalletBackendFormattedRequest { - typealias Response = Transaction + typealias Response = TalerTransaction func operation() -> String { "getTransactionById" } func args() -> Args { Args(transactionId: transactionId, includeContractTerms: withTerms) } @@ -202,7 +202,7 @@ fileprivate struct GetTransactionById: WalletBackendFormattedRequest { extension WalletModel { /// get the specified transaction from Wallet-Core. No networking involved nonisolated func getTransactionById(_ transactionId: String, withTerms: Bool? = nil, viewHandles: Bool = false) - async throws -> Transaction { + async throws -> TalerTransaction { let request = GetTransactionById(transactionId: transactionId, withTerms: withTerms) return try await sendRequest(request, ASYNCDELAY, viewHandles: viewHandles) } diff --git a/TalerWallet1/Views/Actions/Banking/ManualWithdrawDone.swift b/TalerWallet1/Views/Actions/Banking/ManualWithdrawDone.swift @@ -22,7 +22,7 @@ struct ManualWithdrawDone: View { @State private var acceptManualWithdrawalResult: AcceptManualWithdrawalResult? @State private var transactionId: String? - @State private var noTransaction: Transaction? = nil + @State private var noTransaction: TalerTransaction? = nil let navTitle = String(localized: "Wire Transfer") diff --git a/TalerWallet1/Views/Actions/Peer2peer/P2PReadyV.swift b/TalerWallet1/Views/Actions/Peer2peer/P2PReadyV.swift @@ -30,7 +30,7 @@ struct P2PReadyV: View { let navTitle = String(localized: "Ready") @State private var transactionId: String? = nil - @State private var noTransaction: Transaction? = nil + @State private var noTransaction: TalerTransaction? = nil @MainActor private func initiateP2P() async { diff --git a/TalerWallet1/Views/Balances/BalancesPendingRowV.swift b/TalerWallet1/Views/Balances/BalancesPendingRowV.swift @@ -14,7 +14,7 @@ struct BalancesPendingRowV: View { let stack: CallStack let balance: Balance @Binding var selectedBalance: Balance? // <- return here the balance when we go to Transactions - @Binding var pendingTransactions: [Transaction] + @Binding var pendingTransactions: [TalerTransaction] let reloadPending: (_ stack: CallStack) async -> () @ViewBuilder func pendingRowLabel() -> some View { @@ -77,7 +77,7 @@ struct BalancesPendingRowV: View { fileprivate struct BalancesPendingRowV_Previews: PreviewProvider { @MainActor struct BindingViewContainer: View { - @State private var previewTransactions: [Transaction] = [] + @State private var previewTransactions: [TalerTransaction] = [] @State private var previewD: CurrencyInfo = CurrencyInfo.zero(DEMOCURRENCY) @State private var selectedPreviewBalance: Balance? = nil var body: some View { diff --git a/TalerWallet1/Views/Balances/BalancesSectionView.swift b/TalerWallet1/Views/Balances/BalancesSectionView.swift @@ -38,9 +38,9 @@ struct BalancesSectionView { @State private var showSpendingHint = true @State private var isShowingDetailView = false - @State private var completedTransactions: [Transaction] = [] - @State private var recentTransactions: [Transaction] = [] - @State private var pendingTransactions: [Transaction] = [] + @State private var completedTransactions: [TalerTransaction] = [] + @State private var recentTransactions: [TalerTransaction] = [] + @State private var pendingTransactions: [TalerTransaction] = [] private static func className() -> String {"\(self)"} diff --git a/TalerWallet1/Views/HelperViews/BarGraph.swift b/TalerWallet1/Views/HelperViews/BarGraph.swift @@ -22,7 +22,7 @@ struct BarGraphHeader: View { @Environment(\.colorSchemeContrast) private var colorSchemeContrast @AppStorage("minimalistic") var minimalistic: Bool = false - @State private var completedTransactions: [Transaction] = [] + @State private var completedTransactions: [TalerTransaction] = [] @ScaledMetric var barHeight = 9 // relative to fontSize @MainActor @@ -54,11 +54,11 @@ struct BarGraphHeader: View { } // MARK: - struct BarGraph: View { - @Binding var transactions: [Transaction] + @Binding var transactions: [TalerTransaction] let maxBars: Int let barHeight: Double - func maxValue(_ someTransactions: [Transaction]) -> Double { + func maxValue(_ someTransactions: [TalerTransaction]) -> Double { var maxValue = 0.0 for transaction in someTransactions { let value = transaction.common.amountEffective.value @@ -72,7 +72,7 @@ struct BarGraph: View { var body: some View { let slice = transactions.prefix(maxBars) let count = slice.count - let tenTransactions: [Transaction] = Array(slice) + let tenTransactions: [TalerTransaction] = Array(slice) let maxValue = maxValue(tenTransactions) HStack(alignment: .center, spacing: 1) { diff --git a/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift b/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift @@ -18,7 +18,7 @@ struct PaymentDone: View { @EnvironmentObject private var model: WalletModel @State private var paymentDone: Bool = false - @State private var noTransaction: Transaction? = nil + @State private var noTransaction: TalerTransaction? = nil @MainActor private func viewDidLoad() async { diff --git a/TalerWallet1/Views/Sheets/Refund/RefundURIView.swift b/TalerWallet1/Views/Sheets/Refund/RefundURIView.swift @@ -22,7 +22,7 @@ struct RefundURIView: View { @State var refundTransactionId: String? = nil // @State var transaction: Transaction? // @State private var currencyInfo: CurrencyInfo = CurrencyInfo.zero(UNKNOWN) - @State private var noTransaction: Transaction? = nil + @State private var noTransaction: TalerTransaction? = nil @MainActor private func viewDidLoad() async { diff --git a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift @@ -21,7 +21,7 @@ struct WithdrawAcceptDone: View { @EnvironmentObject private var model: WalletModel @State private var transactionId: String? = nil - @State private var transaction: Transaction? = Transaction(dummyCurrency: DEMOCURRENCY) + @State private var transaction: TalerTransaction? = TalerTransaction(dummyCurrency: DEMOCURRENCY) let navTitle = String(localized: "Authorize at Bank", comment: "Nav title") diff --git a/TalerWallet1/Views/Transactions/TransactionRowView.swift b/TalerWallet1/Views/Transactions/TransactionRowView.swift @@ -10,7 +10,7 @@ import taler_swift struct TransactionRowView: View { let scope: ScopeInfo - let transaction : Transaction + let transaction : TalerTransaction @Environment(\.sizeCategory) var sizeCategory @Environment(\.colorScheme) private var colorScheme @@ -209,11 +209,11 @@ struct TransactionRowView: View { // MARK: - #if DEBUG struct TransactionRow_Previews: PreviewProvider { - static var withdrawal = Transaction(incoming: true, + static var withdrawal = TalerTransaction(incoming: true, pending: false, id: "some withdrawal ID", time: Timestamp(from: 1_666_000_000_000)) - static var payment = Transaction(incoming: false, + static var payment = TalerTransaction(incoming: false, pending: false, id: "some payment ID", time: Timestamp(from: 1_666_666_000_000)) @@ -237,7 +237,7 @@ struct TransactionRow_Previews: PreviewProvider { } } // MARK: - -extension Transaction { // for PreViews +extension TalerTransaction { // for PreViews init(incoming: Bool, pending: Bool, id: String, time: Timestamp) { let txState = TransactionState(major: pending ? TransactionMajorState.pending : TransactionMajorState.done) diff --git a/TalerWallet1/Views/Transactions/TransactionSummaryV.swift b/TalerWallet1/Views/Transactions/TransactionSummaryV.swift @@ -9,7 +9,7 @@ import SwiftUI import taler_swift import SymLog -extension Transaction { // for Dummys +extension TalerTransaction { // for Dummys init(dummyCurrency: String) { let amount = Amount.zero(currency: dummyCurrency) let now = Timestamp.now() @@ -30,7 +30,7 @@ struct TransactionSummaryV: View { let stack: CallStack // let scope: ScopeInfo? let transactionId: String - @Binding var outTransaction: Transaction? + @Binding var outTransaction: TalerTransaction? let navTitle: String? let hasDone: Bool let abortAction: ((_ transactionId: String, _ viewHandles: Bool) async throws -> Void)? @@ -54,7 +54,7 @@ struct TransactionSummaryV: View { @State private var ignoreThis: Bool = false @State private var didDelete: Bool = false - @State var transaction = Transaction(dummyCurrency: DEMOCURRENCY) + @State var transaction = TalerTransaction(dummyCurrency: DEMOCURRENCY) @State var viewId = UUID() @Namespace var topID @@ -67,7 +67,7 @@ struct TransactionSummaryV: View { outTransaction = reloadedTransaction } } else { - withAnimation{ transaction = Transaction(dummyCurrency: DEMOCURRENCY); viewId = UUID() } + withAnimation{ transaction = TalerTransaction(dummyCurrency: DEMOCURRENCY); viewId = UUID() } } } @@ -103,7 +103,7 @@ struct TransactionSummaryV: View { let newMajor = transition.newTxState.major Task { // runs on MainActor // flush the screen first, then reload - withAnimation { transaction = Transaction(dummyCurrency: DEMOCURRENCY); viewId = UUID() } + withAnimation { transaction = TalerTransaction(dummyCurrency: DEMOCURRENCY); viewId = UUID() } symLog.log("newState: \(newMajor), reloading transaction") if newMajor != .none { // don't reload after delete await loadTransaction() @@ -268,7 +268,7 @@ struct TransactionSummaryV: View { struct PendingWithdrawalDetails: View { let stack: CallStack - @Binding var transaction: Transaction + @Binding var transaction: TalerTransaction let details: WithdrawalTransactionDetails var body: some View { @@ -312,7 +312,7 @@ struct TransactionSummaryV: View { struct TypeDetail: View { let stack: CallStack let scope: ScopeInfo? - @Binding var transaction: Transaction + @Binding var transaction: TalerTransaction let hasDone: Bool @Environment(\.colorScheme) private var colorScheme @Environment(\.colorSchemeContrast) private var colorSchemeContrast @@ -548,7 +548,7 @@ struct TransactionSummaryV: View { } struct QRCodeDetails: View { - var transaction : Transaction + var transaction : TalerTransaction var body: some View { let details = transaction.detailsToShow() let keys = details.keys @@ -577,15 +577,15 @@ struct TransactionSummaryV: View { //struct TransactionSummary_Previews: PreviewProvider { // static func deleteTransactionDummy(transactionId: String) async throws {} // static func doneActionDummy() {} -// static var withdrawal = Transaction(incoming: true, +// static var withdrawal = TalerTransaction(incoming: true, // pending: true, // id: "some withdrawal ID", // time: Timestamp(from: 1_666_000_000_000)) -// static var payment = Transaction(incoming: false, +// static var payment = TalerTransaction(incoming: false, // pending: false, // id: "some payment ID", // time: Timestamp(from: 1_666_666_000_000)) -// static func reloadActionDummy(transactionId: String) async -> Transaction { return withdrawal } +// static func reloadActionDummy(transactionId: String) async -> TalerTransaction { return withdrawal } // static var previews: some View { // Group { // TransactionSummaryV(transaction: withdrawal, reloadAction: reloadActionDummy, doneAction: doneActionDummy) diff --git a/TalerWallet1/Views/Transactions/TransactionsListView.swift b/TalerWallet1/Views/Transactions/TransactionsListView.swift @@ -21,7 +21,7 @@ struct TransactionsListView: View { @Binding var selectedBalance: Balance? // <- return here the balance when we go to Transactions let navTitle: String? - @Binding var transactions: [Transaction] + @Binding var transactions: [TalerTransaction] let reloadAllAction: (_ stack: CallStack) async -> () @@ -100,11 +100,11 @@ struct TransactionsArraySliceV: View { let symLog: SymLogV? let stack: CallStack let scope: ScopeInfo - @Binding var transactions: [Transaction] + @Binding var transactions: [TalerTransaction] let reloadAllAction: (_ stack: CallStack) async -> () @EnvironmentObject private var model: WalletModel - @State private var noTransaction: Transaction? = nil + @State private var noTransaction: TalerTransaction? = nil var body: some View { #if PRINT_CHANGES