gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-ios] 19/25: SendDone: Prevent double execution


From: gnunet
Subject: [taler-taler-ios] 19/25: SendDone: Prevent double execution
Date: Mon, 06 Nov 2023 20:40:26 +0100

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 82b542709c6848b2fd19f7eda5ec88ed3fb72c38
Author: Marc Stibane <marc@taler.net>
AuthorDate: Sun Nov 5 11:58:07 2023 +0100

    SendDone: Prevent double execution
---
 TalerWallet.xcodeproj/project.pbxproj              | 12 ++++----
 TalerWallet1/Views/Peer2peer/PaymentPurpose.swift  | 12 ++++----
 .../Peer2peer/{SendDone.swift => SendDoneV.swift}  | 35 +++++++++++++---------
 TalerWallet1/Views/Peer2peer/SendPurpose.swift     | 13 ++++----
 4 files changed, 42 insertions(+), 30 deletions(-)

diff --git a/TalerWallet.xcodeproj/project.pbxproj 
b/TalerWallet.xcodeproj/project.pbxproj
index 9ca384c..a521fc8 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -62,7 +62,7 @@
                4E3EAE422A990778009F1BE8 /* KeyboardResponder.swift in Sources 
*/ = {isa = PBXBuildFile; fileRef = 4EAD117529F672FA008EDD0B /* 
KeyboardResponder.swift */; };
                4E3EAE432A990778009F1BE8 /* TransactionRowView.swift in Sources 
*/ = {isa = PBXBuildFile; fileRef = 4EB095302989CBFE0043A8A1 /* 
TransactionRowView.swift */; };
                4E3EAE442A990778009F1BE8 /* PublicConstants.swift in Sources */ 
= {isa = PBXBuildFile; fileRef = 4EA1ABBD29A3833A008821EA /* 
PublicConstants.swift */; };
-               4E3EAE452A990778009F1BE8 /* SendDone.swift in Sources */ = {isa 
= PBXBuildFile; fileRef = 4EB3136029FEE79B007D68BC /* SendDone.swift */; };
+               4E3EAE452A990778009F1BE8 /* SendDoneV.swift in Sources */ = 
{isa = PBXBuildFile; fileRef = 4EB3136029FEE79B007D68BC /* SendDoneV.swift */; 
};
                4E3EAE462A990778009F1BE8 /* TextFieldAlert.swift in Sources */ 
= {isa = PBXBuildFile; fileRef = 4EB095482989CBFE0043A8A1 /* 
TextFieldAlert.swift */; };
                4E3EAE472A990778009F1BE8 /* QuiteSomeCoins.swift in Sources */ 
= {isa = PBXBuildFile; fileRef = 4EBA82AC2A3F580500E5F39A /* 
QuiteSomeCoins.swift */; };
                4E3EAE482A990778009F1BE8 /* PayTemplateView.swift in Sources */ 
= {isa = PBXBuildFile; fileRef = 4EBA56402A7FF5200084948B /* 
PayTemplateView.swift */; };
@@ -227,7 +227,7 @@
                4EB0956E2989CBFE0043A8A1 /* Model+Pending.swift in Sources */ = 
{isa = PBXBuildFile; fileRef = 4EB0954C2989CBFE0043A8A1 /* Model+Pending.swift 
*/; };
                4EB0956F2989CBFE0043A8A1 /* PendingOpView.swift in Sources */ = 
{isa = PBXBuildFile; fileRef = 4EB0954D2989CBFE0043A8A1 /* PendingOpView.swift 
*/; };
                4EB095702989CBFE0043A8A1 /* PendingOpsListView.swift in Sources 
*/ = {isa = PBXBuildFile; fileRef = 4EB0954E2989CBFE0043A8A1 /* 
PendingOpsListView.swift */; };
-               4EB3136129FEE79B007D68BC /* SendDone.swift in Sources */ = {isa 
= PBXBuildFile; fileRef = 4EB3136029FEE79B007D68BC /* SendDone.swift */; };
+               4EB3136129FEE79B007D68BC /* SendDoneV.swift in Sources */ = 
{isa = PBXBuildFile; fileRef = 4EB3136029FEE79B007D68BC /* SendDoneV.swift */; 
};
                4EB431672A1E55C700C5690E /* ManualWithdrawDone.swift in Sources 
*/ = {isa = PBXBuildFile; fileRef = 4EB431662A1E55C700C5690E /* 
ManualWithdrawDone.swift */; };
                4EBA563F2A7FD9390084948B /* SuperScriptDigits.swift in Sources 
*/ = {isa = PBXBuildFile; fileRef = 4EBA563E2A7FD9390084948B /* 
SuperScriptDigits.swift */; };
                4EBA56412A7FF5200084948B /* PayTemplateView.swift in Sources */ 
= {isa = PBXBuildFile; fileRef = 4EBA56402A7FF5200084948B /* 
PayTemplateView.swift */; };
@@ -402,7 +402,7 @@
                4EB0954C2989CBFE0043A8A1 /* Model+Pending.swift */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path 
= "Model+Pending.swift"; sourceTree = "<group>"; };
                4EB0954D2989CBFE0043A8A1 /* PendingOpView.swift */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path 
= PendingOpView.swift; sourceTree = "<group>"; };
                4EB0954E2989CBFE0043A8A1 /* PendingOpsListView.swift */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; 
path = PendingOpsListView.swift; sourceTree = "<group>"; };
-               4EB3136029FEE79B007D68BC /* SendDone.swift */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path 
= SendDone.swift; sourceTree = "<group>"; };
+               4EB3136029FEE79B007D68BC /* SendDoneV.swift */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path 
= SendDoneV.swift; sourceTree = "<group>"; };
                4EB431662A1E55C700C5690E /* ManualWithdrawDone.swift */ = {isa 
= PBXFileReference; lastKnownFileType = sourcecode.swift; path = 
ManualWithdrawDone.swift; sourceTree = "<group>"; };
                4EBA563E2A7FD9390084948B /* SuperScriptDigits.swift */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.swift; path = 
SuperScriptDigits.swift; sourceTree = "<group>"; };
                4EBA56402A7FF5200084948B /* PayTemplateView.swift */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path 
= PayTemplateView.swift; sourceTree = "<group>"; };
@@ -773,7 +773,7 @@
                        children = (
                                4E40E0BD29F25ABB00B85369 /* SendAmount.swift */,
                                4E7940DD29FC307C00A9AEA1 /* SendPurpose.swift 
*/,
-                               4EB3136029FEE79B007D68BC /* SendDone.swift */,
+                               4EB3136029FEE79B007D68BC /* SendDoneV.swift */,
                                4E9320442A1645B600A87B0E /* 
RequestPayment.swift */,
                                4E9320462A164BC700A87B0E /* 
PaymentPurpose.swift */,
                        );
@@ -1085,7 +1085,7 @@
                                4E3EAE422A990778009F1BE8 /* 
KeyboardResponder.swift in Sources */,
                                4E3EAE432A990778009F1BE8 /* 
TransactionRowView.swift in Sources */,
                                4E3EAE442A990778009F1BE8 /* 
PublicConstants.swift in Sources */,
-                               4E3EAE452A990778009F1BE8 /* SendDone.swift in 
Sources */,
+                               4E3EAE452A990778009F1BE8 /* SendDoneV.swift in 
Sources */,
                                4E3EAE462A990778009F1BE8 /* 
TextFieldAlert.swift in Sources */,
                                4E3EAE472A990778009F1BE8 /* 
QuiteSomeCoins.swift in Sources */,
                                4E3EAE482A990778009F1BE8 /* 
PayTemplateView.swift in Sources */,
@@ -1194,7 +1194,7 @@
                                4EAD117629F672FA008EDD0B /* 
KeyboardResponder.swift in Sources */,
                                4EB095572989CBFE0043A8A1 /* 
TransactionRowView.swift in Sources */,
                                4EA1ABBE29A3833A008821EA /* 
PublicConstants.swift in Sources */,
-                               4EB3136129FEE79B007D68BC /* SendDone.swift in 
Sources */,
+                               4EB3136129FEE79B007D68BC /* SendDoneV.swift in 
Sources */,
                                4EB0956B2989CBFE0043A8A1 /* 
TextFieldAlert.swift in Sources */,
                                4EBA82AD2A3F580500E5F39A /* 
QuiteSomeCoins.swift in Sources */,
                                4EBA56412A7FF5200084948B /* 
PayTemplateView.swift in Sources */,
diff --git a/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift 
b/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
index d8b49bb..373daa8 100644
--- a/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
+++ b/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
@@ -18,6 +18,7 @@ struct PaymentPurpose: View {
     @AppStorage("iconOnly") var iconOnly: Bool = false
     let navTitle = String(localized: "NavTitle_Request_Subject", defaultValue: 
"Request", comment: "NavTitle for entering the subject for Request-Payment")
 
+    @State private var transactionStarted: Bool = false
     @FocusState private var isFocused: Bool
 
     private var label: String {
@@ -63,11 +64,12 @@ struct PaymentPurpose: View {
                 let emptyStr = ""
                 let disabled = (expireDays == 0) || (summary.count < 1)
                 NavigationLink(destination: LazyView {
-                    SendDone(stack: stack.push(),
-                      amountToSend: nil,
-                   amountToReceive: amount,
-                           summary: summary,
-                        expireDays: expireDays)
+                    SendDoneV(stack: stack.push(),
+                       amountToSend: nil,
+                    amountToReceive: amount,
+                            summary: summary,
+                         expireDays: expireDays,
+                 transactionStarted: $transactionStarted)
                 }) {
                     Text("Request \(label) \(scopeInfo.currency)")
 //                        .accessibilityFont(buttonFont)
diff --git a/TalerWallet1/Views/Peer2peer/SendDone.swift 
b/TalerWallet1/Views/Peer2peer/SendDoneV.swift
similarity index 81%
rename from TalerWallet1/Views/Peer2peer/SendDone.swift
rename to TalerWallet1/Views/Peer2peer/SendDoneV.swift
index 3cf0ad4..84b31ee 100644
--- a/TalerWallet1/Views/Peer2peer/SendDone.swift
+++ b/TalerWallet1/Views/Peer2peer/SendDoneV.swift
@@ -7,8 +7,8 @@ import taler_swift
 import SymLog
 
 // Called when initiating a P2P transaction: Send coins or Send 
Request(Invoice)
-struct SendDone: View {
-    private let symLog = SymLogV(0)
+struct SendDoneV: View {
+    private let symLog = SymLogV()
     let stack: CallStack
     let navTitle = String(localized: "P2P Ready")
 #if DEBUG
@@ -22,10 +22,11 @@ struct SendDone: View {
     let amountToReceive: Amount?
     let summary: String
     let expireDays: UInt
+    @Binding var transactionStarted: Bool
 
     @EnvironmentObject private var model: WalletModel
 
-    @State private var transactionId: String?
+    @State private var transactionId: String? = nil
 
     func reloadOneAction(_ transactionId: String) async throws -> Transaction {
         return try await model.getTransactionByIdT(transactionId)
@@ -59,6 +60,12 @@ struct SendDone: View {
         .task {
             symLog.log(".task")
             do {
+                guard transactionStarted == false else {
+// TODO:               logger.warning("Try to start P2P a second time")
+                    symLog.log("Yikes❗️ Try to start P2P a second time")
+                    return
+                }
+                transactionStarted = true
                 let timestamp = developerMode ? 
Timestamp.inSomeMinutes(expireDays > 20 ? (24*60)
                                                                       : 
expireDays > 5 ? 60 : 3)
                                               : 
Timestamp.inSomeDays(expireDays)
@@ -86,14 +93,14 @@ struct SendDone: View {
     }
 }
 // MARK: -
-struct SendNow_Previews: PreviewProvider {
-    static var previews: some View {
-        Group {
-            SendDone(stack: CallStack("Preview"),
-              amountToSend: try! Amount(fromString: LONGCURRENCY + ":4.8"),
-           amountToReceive: nil,
-                   summary: "some subject/purpose",
-                expireDays: 0)
-        }
-    }
-}
+//struct SendNow_Previews: PreviewProvider {
+//    static var previews: some View {
+//        Group {
+//            SendDoneV(stack: CallStack("Preview"),
+//              amountToSend: try! Amount(fromString: LONGCURRENCY + ":4.8"),
+//           amountToReceive: nil,
+//                   summary: "some subject/purpose",
+//                expireDays: 0)
+//        }
+//    }
+//}
diff --git a/TalerWallet1/Views/Peer2peer/SendPurpose.swift 
b/TalerWallet1/Views/Peer2peer/SendPurpose.swift
index edb3cd9..3fc658c 100644
--- a/TalerWallet1/Views/Peer2peer/SendPurpose.swift
+++ b/TalerWallet1/Views/Peer2peer/SendPurpose.swift
@@ -19,6 +19,8 @@ struct SendPurpose: View {
     @AppStorage("iconOnly") var iconOnly: Bool = false
     let navTitle = String(localized: "NavTitle_Send_Subject", defaultValue: 
"Subject", comment: "NavTitle for entering the subject for Send-Money")
 
+    @State private var transactionStarted: Bool = false
+
     private var value: String {
 //        let mag = pow(10, formatter.maximumFractionDigits)
 //        return formatter.string(for: Decimal(centsToTransfer) / mag) ?? ""
@@ -81,11 +83,12 @@ struct SendPurpose: View {
                 let emptyStr = ""
                 let disabled = (expireDays == 0) || (summary.count < 1)    // 
TODO: check amountAvailable
                 NavigationLink(destination: LazyView {
-                    SendDone(stack: stack.push(),
-                      amountToSend: amount,
-                   amountToReceive: nil,
-                           summary: summary,
-                        expireDays: expireDays)
+                    SendDoneV(stack: stack.push(),
+                       amountToSend: amount,
+                    amountToReceive: nil,
+                            summary: summary,
+                         expireDays: expireDays,
+                 transactionStarted: $transactionStarted)
                 }) {
                     Text("Send \(value) \(amountAvailable.currencyStr) now", 
comment: "first is value, second currencyString")  // TODO: currency formatter
                 }

-- 
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]