gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-ios] 02/05: recoup, denomLoss


From: gnunet
Subject: [taler-taler-ios] 02/05: recoup, denomLoss
Date: Mon, 15 Apr 2024 20:24:43 +0200

This is an automated email from the git hooks/post-receive script.

marc-stibane pushed a commit to branch master
in repository taler-ios.

commit 8837d688a3be08c4e28710c923896e1492799862
Author: Marc Stibane <marc@taler.net>
AuthorDate: Mon Apr 15 19:54:16 2024 +0200

    recoup, denomLoss
---
 TalerWallet1/Model/Transaction.swift               | 53 +++++++++++++++++-----
 .../Views/Transactions/TransactionSummaryV.swift   | 19 ++++++++
 2 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/TalerWallet1/Model/Transaction.swift 
b/TalerWallet1/Model/Transaction.swift
index 85ed2d3..6ea3569 100644
--- a/TalerWallet1/Model/Transaction.swift
+++ b/TalerWallet1/Model/Transaction.swift
@@ -206,6 +206,9 @@ enum TransactionType: String, Codable {
     case scanPushCredit = "peer-push-credit"    // scan QR, receive coins from 
peer
     case peerPullCredit = "peer-pull-credit"    // request payment from peer, 
show QR
     case scanPullDebit  = "peer-pull-debit"     // scan QR, pay requested
+//    case internalWithdrawal = "internal-withdrawal"
+    case recoup
+    case denomLoss      = "denom-loss"          // coins are lost, 
denomination no longer available
 
     var isWithdrawal : Bool { self == .withdrawal }
     var isDeposit    : Bool { self == .deposit }
@@ -272,6 +275,10 @@ struct TransactionCommon: Decodable, Sendable {
                                                   comment: "TransactionType, 
send invoice to another wallet")
             case .scanPullDebit:  return String(localized: "Pay Request",      
 // Pay Invoice is the same as Payment
                                                   comment: "TransactionType, 
scan invoice to pay to another wallet")
+            case .recoup:         return String(localized: "Recoup",
+                                                  comment: "TransactionType")
+            case .denomLoss:      return String(localized: "Money lost",
+                                                  comment: "TransactionType")
         }
     }
     func localizedTypePast(_ type: TransactionType) -> String {
@@ -325,12 +332,10 @@ struct WithdrawalDetails: Decodable {
     /// URL for user-initiated confirmation
     var bankConfirmationUrl: String?
 }
-
 struct WithdrawalTransactionDetails: Decodable {
     var exchangeBaseUrl: String
     var withdrawalDetails: WithdrawalDetails
 }
-
 struct WithdrawalTransaction : Sendable {
     var common: TransactionCommon
     var details: WithdrawalTransactionDetails
@@ -342,7 +347,6 @@ struct TrackingState : Decodable {
     var amountRaw: Amount
     var wireFee: Amount
 }
-
 struct DepositTransactionDetails: Decodable {
     var depositGroupId: String
     var targetPaytoUri: String
@@ -351,7 +355,6 @@ struct DepositTransactionDetails: Decodable {
     var deposited: Bool
     var trackingState: [TrackingState]?
 }
-
 struct DepositTransaction : Sendable {
     var common: TransactionCommon
     var details: DepositTransactionDetails
@@ -363,7 +366,6 @@ struct RefundInfo: Decodable {
     var transactionId: String
     var timestamp: Timestamp
 }
-
 struct PaymentTransactionDetails: Decodable {
     var info: OrderShortInfo
     var proposalId: String
@@ -374,7 +376,6 @@ struct PaymentTransactionDetails: Decodable {
     var refundQueryActive: Bool?
     var posConfirmation: String?
 }
-
 struct PaymentTransaction : Sendable{
     var common: TransactionCommon
     var details: PaymentTransactionDetails
@@ -387,7 +388,6 @@ struct RefundTransactionDetails: Decodable {
     var amountInvalid: Amount?
     var info: OrderShortInfo?       // TODO: is this still here?
 }
-
 struct RefundTransaction : Sendable{
     var common: TransactionCommon
     var details: RefundTransactionDetails
@@ -451,8 +451,7 @@ struct RefreshTransactionDetails: Decodable {
     var refreshOutputAmount: Amount
     var error: RefreshError?
 }
-
-struct RefreshTransaction : Sendable{
+struct RefreshTransaction : Sendable {
     var common: TransactionCommon
     var details: RefreshTransactionDetails
 }
@@ -461,18 +460,33 @@ struct P2pShortInfo: Codable, Sendable {
     var summary: String
     var expiration: Timestamp
 }
-
 struct P2PTransactionDetails: Codable, Sendable {
     var exchangeBaseUrl: String
     var talerUri: String?       // only if we initiated the transaction
     var info: P2pShortInfo
 }
-
-struct P2PTransaction : Sendable{
+struct P2PTransaction : Sendable {
     var common: TransactionCommon
     var details: P2PTransactionDetails
 }
 
+struct RecoupTransactionDetails: Decodable {
+    var recoupReason: String?
+}
+struct RecoupTransaction : Sendable {
+    var common: TransactionCommon
+    var details: RecoupTransactionDetails
+}
+
+struct DenomLossTransactionDetails: Decodable {
+    var exchangeBaseUrl: String
+    var lossEventType: String
+}
+struct DenomLossTransaction : Sendable {
+    var common: TransactionCommon
+    var details: DenomLossTransactionDetails
+}
+
 struct DummyTransaction : Sendable{
     var common: TransactionCommon
 }
@@ -485,6 +499,8 @@ enum Transaction: Decodable, Hashable, Identifiable, 
Sendable {
     case refund (RefundTransaction)
     case refresh (RefreshTransaction)
     case peer2peer (P2PTransaction)
+    case recoup (RecoupTransaction)
+    case denomLoss (DenomLossTransaction)
 
     init(from decoder: Decoder) throws {
         do {
@@ -508,6 +524,12 @@ enum Transaction: Decodable, Hashable, Identifiable, 
Sendable {
                 case .peerPushDebit, .peerPullCredit, .scanPullDebit, 
.scanPushCredit:
                     let details = try P2PTransactionDetails.init(from: decoder)
                     self = .peer2peer(P2PTransaction(common: common, details: 
details))
+                case .recoup:
+                    let details = try RecoupTransactionDetails.init(from: 
decoder)
+                    self = .recoup(RecoupTransaction(common: common, details: 
details))
+                case .denomLoss:
+                    let details = try DenomLossTransactionDetails.init(from: 
decoder)
+                    self = .denomLoss(DenomLossTransaction(common: common, 
details: details))
                 default:
                     let context = DecodingError.Context(
                         codingPath: decoder.codingPath,
@@ -608,6 +630,8 @@ enum Transaction: Decodable, Hashable, Identifiable, 
Sendable {
             case .refund(let refundTransaction):         
refundTransaction.common
             case .refresh(let refreshTransaction):       
refreshTransaction.common
             case .peer2peer(let p2pTransaction):         p2pTransaction.common
+            case .recoup(let recoupTransaction):         
recoupTransaction.common
+            case .denomLoss(let denomLossTransaction):   
denomLossTransaction.common
         }
     }
 
@@ -632,6 +656,11 @@ enum Transaction: Decodable, Hashable, Identifiable, 
Sendable {
                 result[EXCHANGEBASEURL] = 
p2pTransaction.details.exchangeBaseUrl
                 result["summary"] = p2pTransaction.details.info.summary
                 result[TALERURI] = p2pTransaction.details.talerUri ?? ""
+            case .recoup(let recoupTransaction):
+                result["reason"] = recoupTransaction.details.recoupReason
+            case .denomLoss(let denomLossTransaction):
+                result[EXCHANGEBASEURL] = 
denomLossTransaction.details.exchangeBaseUrl
+                result["reason"] = denomLossTransaction.details.lossEventType
         }
         return result
     }
diff --git a/TalerWallet1/Views/Transactions/TransactionSummaryV.swift 
b/TalerWallet1/Views/Transactions/TransactionSummaryV.swift
index d741aa2..74d719b 100644
--- a/TalerWallet1/Views/Transactions/TransactionSummaryV.swift
+++ b/TalerWallet1/Views/Transactions/TransactionSummaryV.swift
@@ -418,6 +418,25 @@ struct TransactionSummaryV: View {
                                          summary: details.info.summary,
                                         merchant: nil)
                     } // p2p
+                    case .recoup(let recoupTransaction): Group {
+                        let details = recoupTransaction.details                
 // TODO: more details
+                        ThreeAmountsSheet(stack: stack.push(),
+                                         common: common, topAbbrev: 
String(localized: "Recoup:", comment: "mini"),
+                                       topTitle: String(localized: "Recoup:"),
+                                        baseURL: nil, large: true,             
 // TODO: baseURL, noFees
+                                        summary: nil,
+                                       merchant: nil)
+
+                    }
+                    case .denomLoss(let denomLossTransaction): Group {
+                        let details = denomLossTransaction.details             
 // TODO: more details
+                        ThreeAmountsSheet(stack: stack.push(),
+                                         common: common, topAbbrev: 
String(localized: "Lost:", comment: "mini"),
+                                       topTitle: String(localized: "Money 
lost:"),
+                                        baseURL: details.exchangeBaseUrl, 
large: true,             // TODO: baseURL, noFees
+                                        summary: details.lossEventType,
+                                       merchant: nil)
+                    }
                 } // switch
             } // Group
         }

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]