gnunet-svn
[Top][All Lists]
Advanced

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

[taler-taler-ios] 03/03: Done-button in safeAreaInset


From: gnunet
Subject: [taler-taler-ios] 03/03: Done-button in safeAreaInset
Date: Sun, 14 Jul 2024 18:48:42 +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 d2e7c9b5017e9a200b125eb631aa15faa6859122
Author: Marc Stibane <marc@taler.net>
AuthorDate: Sun Jul 14 18:45:41 2024 +0200

    Done-button in safeAreaInset
---
 .../Views/Banking/ManualWithdrawDone.swift         | 15 ++++++----
 TalerWallet1/Views/Peer2peer/P2PReadyV.swift       | 12 ++++++--
 .../Views/Sheets/Payment/PaymentDone.swift         | 15 ++++++----
 .../Views/Sheets/Refund/RefundURIView.swift        | 12 ++++++--
 .../WithdrawAcceptDone.swift                       | 27 +++++++++++++-----
 .../Views/Transactions/TransactionSummaryV.swift   | 33 +++++++++-------------
 .../Views/Transactions/TransactionsListView.swift  |  7 +++--
 7 files changed, 79 insertions(+), 42 deletions(-)

diff --git a/TalerWallet1/Views/Banking/ManualWithdrawDone.swift 
b/TalerWallet1/Views/Banking/ManualWithdrawDone.swift
index 4a895dd..8febb3a 100644
--- a/TalerWallet1/Views/Banking/ManualWithdrawDone.swift
+++ b/TalerWallet1/Views/Banking/ManualWithdrawDone.swift
@@ -1,7 +1,10 @@
 /*
- * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-24 Taler Systems S.A.
  * See LICENSE.md
  */
+/**
+ * @author Marc Stibane
+ */
 import SwiftUI
 import taler_swift
 import SymLog
@@ -23,9 +26,6 @@ struct ManualWithdrawDone: View {
     func reloadOneAction(_ transactionId: String, viewHandles: Bool) async 
throws -> Transaction {
         return try await model.getTransactionByIdT(transactionId, viewHandles: 
viewHandles)
     }
-    func dismissTopAnimated(_ stack: CallStack) {
-        dismissTop(stack.push())
-    }
 
     var body: some View {
 #if PRINT_CHANGES
@@ -38,7 +38,7 @@ struct ManualWithdrawDone: View {
                               transactionId: transactionId,
                                reloadAction: reloadOneAction,
                                    navTitle: navTitle,
-                                 doneAction: dismissTopAnimated,    // 
ViewState.shared.popToRootView,
+                                    hasDone: true,
                                 abortAction: nil,
                                deleteAction: nil,
                                  failAction: nil,
@@ -47,6 +47,11 @@ struct ManualWithdrawDone: View {
                 .navigationBarBackButtonHidden(true)
                 .interactiveDismissDisabled()           // can only use "Done" 
button to dismiss
 //                .navigationTitle(navTitle)
+                .safeAreaInset(edge: .bottom) {
+                    Button("Done", action: { dismissTop(stack.push()) } )      
 // ViewState.shared.popToRootView ?
+                        .buttonStyle(TalerButtonStyle(type: .prominent))
+                            .padding(.horizontal)
+                }
             } else {
                 LoadingView(scopeInfo: nil, message: 
exchange.exchangeBaseUrl.trimURL())
             }
diff --git a/TalerWallet1/Views/Peer2peer/P2PReadyV.swift 
b/TalerWallet1/Views/Peer2peer/P2PReadyV.swift
index ea0d163..7e39783 100644
--- a/TalerWallet1/Views/Peer2peer/P2PReadyV.swift
+++ b/TalerWallet1/Views/Peer2peer/P2PReadyV.swift
@@ -1,7 +1,10 @@
 /*
- * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-24 Taler Systems S.A.
  * See LICENSE.md
  */
+/**
+ * @author Marc Stibane
+ */
 import SwiftUI
 import taler_swift
 import SymLog
@@ -42,7 +45,7 @@ struct P2PReadyV: View {
                               transactionId: transactionId,
                                reloadAction: reloadOneAction,
                                    navTitle: navTitle,
-                                 doneAction: ViewState.shared.popToRootView,
+                                    hasDone: true,
                                 abortAction: nil,
                                deleteAction: nil,
                                  failAction: nil,
@@ -50,6 +53,11 @@ struct P2PReadyV: View {
                                resumeAction: nil)
                 .navigationBarBackButtonHidden(true)
                 .interactiveDismissDisabled()           // can only use "Done" 
button to dismiss
+                .safeAreaInset(edge: .bottom) {
+                    Button("Done", action: { dismissTop(stack.push()) } )      
 // ViewState.shared.popToRootView ?
+                        .buttonStyle(TalerButtonStyle(type: .prominent))
+                        .padding(.horizontal)
+                }
             } else {
 #if DEBUG
                 let message = amountToTransfer.currencyStr
diff --git a/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift 
b/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift
index ddd7ff9..b89833f 100644
--- a/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift
+++ b/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift
@@ -1,7 +1,10 @@
 /*
- * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-24 Taler Systems S.A.
  * See LICENSE.md
  */
+/**
+ * @author Marc Stibane
+ */
 import SwiftUI
 import SymLog
 
@@ -18,9 +21,6 @@ struct PaymentDone: View {
     func reloadOneAction(_ transactionId: String, viewHandles: Bool) async 
throws -> Transaction {
         return try await model.getTransactionByIdT(transactionId, viewHandles: 
viewHandles)
     }
-    func dismissTopAnimated(_ stack: CallStack) {
-        dismissTop(stack.push())
-    }
 
     var body: some View {
 #if PRINT_CHANGES
@@ -34,7 +34,7 @@ struct PaymentDone: View {
                             transactionId: transactionId,
                              reloadAction: reloadOneAction,
                                  navTitle: navTitle,
-                               doneAction: dismissTopAnimated,
+                                  hasDone: true,
                               abortAction: nil,
                              deleteAction: nil,
                                failAction: nil,
@@ -43,6 +43,11 @@ struct PaymentDone: View {
                 .navigationBarBackButtonHidden(true)
                 .interactiveDismissDisabled()           // can only use "Done" 
button to dismiss
                 .navigationTitle(navTitle)
+                .safeAreaInset(edge: .bottom) {
+                    Button("Done", action: { dismissTop(stack.push()) } )
+                        .buttonStyle(TalerButtonStyle(type: .prominent))
+                        .padding(.horizontal)
+                }
             } else {
                 LoadingView(scopeInfo: nil, message: "Paying...")
                     .task {
diff --git a/TalerWallet1/Views/Sheets/Refund/RefundURIView.swift 
b/TalerWallet1/Views/Sheets/Refund/RefundURIView.swift
index ec6ff99..e4fd534 100644
--- a/TalerWallet1/Views/Sheets/Refund/RefundURIView.swift
+++ b/TalerWallet1/Views/Sheets/Refund/RefundURIView.swift
@@ -1,7 +1,10 @@
 /*
- * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-24 Taler Systems S.A.
  * See LICENSE.md
  */
+/**
+ * @author Marc Stibane
+ */
 import SwiftUI
 import SymLog
 import taler_swift
@@ -27,12 +30,17 @@ struct RefundURIView: View {
                           transactionId: refundTransactionId,
                            reloadAction: reloadOneAction,
                                navTitle: nil,   // navTitle,
-                             doneAction: ViewState.shared.popToRootView,
+                                hasDone: true,
                             abortAction: model.abortTransaction,
                            deleteAction: model.deleteTransaction,
                              failAction: model.failTransaction,
                           suspendAction: model.suspendTransaction,
                            resumeAction: model.resumeTransaction)
+            .safeAreaInset(edge: .bottom) {
+                Button("Done", action: { dismissTop(stack.push()) } )          
 // ViewState.shared.popToRootView ?
+                    .buttonStyle(TalerButtonStyle(type: .prominent))
+                    .padding(.horizontal)
+            }
         } else {
             LoadingView(scopeInfo: nil, message: url.host)
                 .task {
diff --git 
a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift 
b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift
index f53c505..7f7fd56 100644
--- a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift
+++ b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift
@@ -1,7 +1,10 @@
 /*
- * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-24 Taler Systems S.A.
  * See LICENSE.md
  */
+/**
+ * @author Marc Stibane
+ */
 import SwiftUI
 import taler_swift
 import SymLog
@@ -19,13 +22,12 @@ struct WithdrawAcceptDone: View {
     @EnvironmentObject private var model: WalletModel
 
     @State private var transactionId: String? = nil
+    @State private var transaction: Transaction? = nil
 
     func reloadOneAction(_ transactionId: String, viewHandles: Bool) async 
throws -> Transaction {
-            return try await model.getTransactionByIdT(transactionId, 
viewHandles: viewHandles)
-    }
-    func dismissTopAnimated(_ stack: CallStack) {
-        symLog.log("ErrorSheet dismissTop")
-        dismissTop(stack.push())
+        let response = try await model.getTransactionByIdT(transactionId, 
viewHandles: viewHandles)
+        transaction = response
+        return response
     }
 
     var body: some View {
@@ -39,7 +41,7 @@ struct WithdrawAcceptDone: View {
                               transactionId: transactionId,
                                reloadAction: reloadOneAction,
                                    navTitle: navTitle,
-                                 doneAction: dismissTopAnimated,
+                                    hasDone: true,
                                 abortAction: nil,
                                deleteAction: nil,
                                  failAction: nil,
@@ -48,6 +50,17 @@ struct WithdrawAcceptDone: View {
                 .navigationBarBackButtonHidden(true)
                 .interactiveDismissDisabled()           // can only use "Done" 
button to dismiss
                 .navigationTitle(navTitle)
+                .safeAreaInset(edge: .bottom) {
+                    if let transaction {
+                        Button(transaction.shouldConfirm ? "Authorize later" : 
"Done", action: { dismissTop(stack.push()) } )
+                            .buttonStyle(TalerButtonStyle(type: 
transaction.shouldConfirm ? .bordered : .prominent))
+                            .padding(.horizontal)
+                    } else {
+                        Button("Cancel", action: { dismissTop(stack.push()) } )
+                            .buttonStyle(TalerButtonStyle(type: .bordered))
+                            .padding(.horizontal)
+                    }
+                }
             } else {
                 LoadingView(scopeInfo: nil, message: exchangeBaseUrl?.trimURL()
                                                   ?? "Bank Authorization")
diff --git a/TalerWallet1/Views/Transactions/TransactionSummaryV.swift 
b/TalerWallet1/Views/Transactions/TransactionSummaryV.swift
index b140722..14acd70 100755
--- a/TalerWallet1/Views/Transactions/TransactionSummaryV.swift
+++ b/TalerWallet1/Views/Transactions/TransactionSummaryV.swift
@@ -30,7 +30,7 @@ struct TransactionSummaryV: View {
     let transactionId: String
     let reloadAction: ((_ transactionId: String, _ viewHandles: Bool) async 
throws -> Transaction)
     let navTitle: String?
-    let doneAction: ((_ stack: CallStack) -> Void)?
+    let hasDone: Bool
     let abortAction: ((_ transactionId: String, _ viewHandles: Bool) async 
throws -> Void)?
     let deleteAction: ((_ transactionId: String, _ viewHandles: Bool) async 
throws -> Void)?
     let failAction: ((_ transactionId: String, _ viewHandles: Bool) async 
throws -> Void)?
@@ -58,13 +58,14 @@ struct TransactionSummaryV: View {
         }
     }
 
+    @MainActor
     @discardableResult
     func checkDismiss(_ notification: Notification, _ logStr: String = "") -> 
Bool {
-        if let doneAction {
+        if hasDone {
             if let transition = notification.userInfo?[TRANSACTIONTRANSITION] 
as? TransactionTransition {
                 if transition.transactionId == 
transaction.common.transactionId {       // is the transition for THIS 
transaction?
                     symLog.log(logStr)
-                    doneAction(stack.push())        // if this view is in a 
sheet then dissmiss the sheet
+                    dismissTop(stack.push())        // if this view is in a 
sheet then dissmiss the sheet
                     return true
                 }
             }
@@ -115,12 +116,11 @@ struct TransactionSummaryV: View {
                                           command: .resume, warning: nil, 
action: resumeAction)
                     } }
                 } // Suspend + Resume buttons
-                Text(dateString)
-                    .talerFont(.body)
-                    .accessibilityLabel(a11yDate)
-                    .foregroundColor(WalletColors().secondary(colorScheme, 
colorSchemeContrast))
-                    .listRowSeparator(.hidden)
-                VStack(alignment: .trailing) {
+                Group {
+                    Text(dateString)
+                        .talerFont(.body)
+                        .accessibilityLabel(a11yDate)
+                        .foregroundColor(WalletColors().secondary(colorScheme, 
colorSchemeContrast))
                     let majorState = common.txState.major.localizedState
                     let minorState = common.txState.minor?.localizedState ?? 
nil
                     let state = developerMode ? transaction.isPending ? 
minorState ?? majorState
@@ -128,18 +128,17 @@ struct TransactionSummaryV: View {
                                               : majorState
                     HStack {
                         Text(Image(common.type.iconName()))
-//                        Text(verbatim: "|")   // only reason for this 
leading-aligned text is to get a nice full length listRowSeparator
                             .accessibilityHidden(true)
-//                            .foregroundColor(Color.clear)
-//                        Spacer()
+                        Spacer()
                         Text("Status: \(state)")
                             .frame(maxWidth: .infinity, alignment: .trailing)
                             .multilineTextAlignment(.trailing)
-                    }
-                }    .listRowSeparator(.automatic)
+                    } // Icon + State
+                }    .listRowSeparator(.hidden)
                     .talerFont(.title)
                 TypeDetail(stack: stack.push(),
-                           transaction: $transaction, hasDone: doneAction != 
nil)
+                     transaction: $transaction,
+                         hasDone: hasDone)
 
                 // TODO: Retry Countdown, Retry Now button
 //                if transaction.isRetryable { if let retryAction {
@@ -161,10 +160,6 @@ struct TransactionSummaryV: View {
                                       warning: String(localized: "Are you sure 
you want to delete this transaction?"),
                                       action: deleteAction)
                 } } // Delete button
-                if let doneAction {
-                    Button(transaction.shouldConfirm ? "Authorize later" : 
"Done", action: { doneAction(stack.push()) } )
-                        .buttonStyle(TalerButtonStyle(type: 
transaction.shouldConfirm ? .bordered : .prominent))
-                } // Done button
             }.id(viewId)    // change viewId to enforce a draw update
             .listStyle(myListStyle.style).anyView
         } // Group
diff --git a/TalerWallet1/Views/Transactions/TransactionsListView.swift 
b/TalerWallet1/Views/Transactions/TransactionsListView.swift
index 9002132..6085e25 100644
--- a/TalerWallet1/Views/Transactions/TransactionsListView.swift
+++ b/TalerWallet1/Views/Transactions/TransactionsListView.swift
@@ -1,7 +1,10 @@
 /*
- * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-24 Taler Systems S.A.
  * See LICENSE.md
  */
+/**
+ * @author Marc Stibane
+ */
 import SwiftUI
 import SymLog
 
@@ -102,7 +105,7 @@ struct TransactionsArraySliceV: View {
                                   transactionId: transaction.id,
                                    reloadAction: reloadOneAction,
                                        navTitle: nil,
-                                     doneAction: nil,
+                                        hasDone: false,
                                     abortAction: abortAction,
                                    deleteAction: deleteAction,
                                      failAction: failAction,

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