taler-ios

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

commit 6d808db07f6268e5097711d4acc97b56663bbf4b
parent 35d875213d6a56cdbdf4087de57f659d182d128d
Author: Marc Stibane <marc@taler.net>
Date:   Sun,  4 Feb 2024 14:23:04 +0100

Deposit

Diffstat:
MTalerWallet1/Model/Transaction.swift | 28++++++++++++++++++++++++++++
MTalerWallet1/Views/Transactions/TransactionSummaryV.swift | 7+++++++
2 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/TalerWallet1/Model/Transaction.swift b/TalerWallet1/Model/Transaction.swift @@ -318,6 +318,27 @@ struct WithdrawalTransaction : Sendable{ var details: WithdrawalTransactionDetails } +struct TrackingState : Decodable { + var wireTransferId: String + var timestampExecuted: Timestamp + var amountRaw: Amount + var wireFee: Amount +} + +struct DepositTransactionDetails: Decodable { + var depositGroupId: String + var targetPaytoUri: String + var wireTransferProgress: Int + var wireTransferDeadline: Timestamp + var deposited: Bool + var trackingState: [TrackingState]? +} + +struct DepositTransaction : Sendable { + var common: TransactionCommon + var details: DepositTransactionDetails +} + struct RefundInfo: Decodable { var amountEffective: Amount var amountRaw: Amount @@ -421,6 +442,7 @@ struct DummyTransaction : Sendable{ enum Transaction: Decodable, Hashable, Identifiable, Sendable { case dummy (DummyTransaction) case withdrawal (WithdrawalTransaction) + case deposit (DepositTransaction) case payment (PaymentTransaction) case refund (RefundTransaction) case reward (RewardTransaction) @@ -434,6 +456,9 @@ enum Transaction: Decodable, Hashable, Identifiable, Sendable { case .withdrawal: let details = try WithdrawalTransactionDetails.init(from: decoder) self = .withdrawal(WithdrawalTransaction(common: common, details: details)) + case .deposit: + let details = try DepositTransactionDetails.init(from: decoder) + self = .deposit(DepositTransaction(common: common, details: details)) case .payment: let details = try PaymentTransactionDetails.init(from: decoder) self = .payment(PaymentTransaction(common: common, details: details)) @@ -544,6 +569,7 @@ enum Transaction: Decodable, Hashable, Identifiable, Sendable { return switch self { case .dummy(let dummyTransaction): dummyTransaction.common case .withdrawal(let withdrawalTransaction): withdrawalTransaction.common + case .deposit(let depositTransaction): depositTransaction.common case .payment(let paymentTransaction): paymentTransaction.common case .refund(let refundTransaction): refundTransaction.common case .reward(let rewardTransaction): rewardTransaction.common @@ -559,6 +585,8 @@ enum Transaction: Decodable, Hashable, Identifiable, Sendable { break case .withdrawal(let withdrawalTransaction): result[EXCHANGEBASEURL] = withdrawalTransaction.details.exchangeBaseUrl + case .deposit(let depositTransaction): + result[EXCHANGEBASEURL] = depositTransaction.details.depositGroupId case .payment(let paymentTransaction): result["summary"] = paymentTransaction.details.info.summary case .refund(let refundTransaction): diff --git a/TalerWallet1/Views/Transactions/TransactionSummaryV.swift b/TalerWallet1/Views/Transactions/TransactionSummaryV.swift @@ -275,6 +275,13 @@ struct TransactionSummaryV: View { topTitle: String(localized: "Chosen amount to withdraw:"), baseURL: details.exchangeBaseUrl, large: false, summary: nil) } + case .deposit(let depositTransaction): Group { + let details = depositTransaction.details + ThreeAmountsSheet(common: common, topAbbrev: String(localized: "Deposit:", comment: "mini"), + topTitle: String(localized: "Amount to deposit:"), + baseURL: nil, large: true, // TODO: baseURL + summary: nil) + } case .payment(let paymentTransaction): Group { let details = paymentTransaction.details NavigationLink(destination: LazyView {