commit 9b58bfd573311bdaac97e03ca2b053b4f7304ef7 parent 279a009b4ab3586eaa1e9e861c7cb10fe2452a3e Author: Marc Stibane <marc@taler.net> Date: Sun, 14 Jul 2024 18:22:58 +0200 dismissTop with stack Diffstat:
9 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/TalerWallet1/Helper/View+dismissTop.swift b/TalerWallet1/Helper/View+dismissTop.swift @@ -22,7 +22,7 @@ import SwiftUI /// A presented sheet (SwiftUI view) doesn't always close when calling "dismiss()" provided by @Environment(\.dismiss), /// so we are walking the view stack to find the top presentedViewController (UIKit) and dismiss it. extension View { - @MainActor public func dismissTop(animated: Bool = true) { + @MainActor func dismissTop(_ stack: CallStack, animated: Bool = true) { let windows = UIApplication.shared.connectedScenes.compactMap { ($0 as? UIWindowScene)?.keyWindow // TODO: iPad might have more than 1 window } diff --git a/TalerWallet1/Views/Banking/ManualWithdrawDone.swift b/TalerWallet1/Views/Banking/ManualWithdrawDone.swift @@ -24,7 +24,7 @@ struct ManualWithdrawDone: View { return try await model.getTransactionByIdT(transactionId, viewHandles: viewHandles) } func dismissTopAnimated(_ stack: CallStack) { - dismissTop() + dismissTop(stack.push()) } var body: some View { diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift @@ -125,7 +125,7 @@ struct MainView: View { message: { Text("Please allow camera access in settings.") }) .sheet(isPresented: $showQRScanner, onDismiss: dismissingSheet) { let sheet = AnyView(QRSheet(stack: stack.push(".sheet"))) - Sheet(sheetView: sheet) + Sheet(stack: stack.push(), sheetView: sheet) } // sheet } else if controller.backendState == .error { ErrorView(errortext: nil) // TODO: show Error View @@ -148,7 +148,7 @@ struct MainView: View { } .sheet(item: $urlToOpen, onDismiss: sheetDismissed) { url in let sheet = AnyView(URLSheet(stack: stack.push(), urlToOpen: url)) - Sheet(sheetView: sheet) + Sheet(stack: stack.push(), sheetView: sheet) } .sheet(isPresented: $model.showError) { model.setError(nil) diff --git a/TalerWallet1/Views/Sheets/P2P_Sheets/P2pAcceptDone.swift b/TalerWallet1/Views/Sheets/P2P_Sheets/P2pAcceptDone.swift @@ -36,11 +36,11 @@ struct P2pAcceptDone: View { .task { if incoming { if let _ = try? await model.acceptPeerPushCreditM(transactionId) { - dismissTop() + dismissTop(stack.push()) } } else { if let _ = try? await model.confirmPeerPullDebitM(transactionId) { - dismissTop() + dismissTop(stack.push()) } } } diff --git a/TalerWallet1/Views/Sheets/Payment/PayTemplateV.swift b/TalerWallet1/Views/Sheets/Payment/PayTemplateV.swift @@ -61,7 +61,7 @@ struct PayTemplateV: View { // TODO: show error } } - dismissTop() + dismissTop(stack.push()) } } diff --git a/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift b/TalerWallet1/Views/Sheets/Payment/PaymentDone.swift @@ -19,7 +19,7 @@ struct PaymentDone: View { return try await model.getTransactionByIdT(transactionId, viewHandles: viewHandles) } func dismissTopAnimated(_ stack: CallStack) { - dismissTop() + dismissTop(stack.push()) } var body: some View { diff --git a/TalerWallet1/Views/Sheets/Payment/PaymentView.swift b/TalerWallet1/Views/Sheets/Payment/PaymentView.swift @@ -150,7 +150,7 @@ struct PaymentView: View { .padding(.horizontal) } else { Button("Cancel", action: { - dismissTop() + dismissTop(stack.push()) }) .buttonStyle(TalerButtonStyle(type: .bordered)) .padding(.horizontal) diff --git a/TalerWallet1/Views/Sheets/Sheet.swift b/TalerWallet1/Views/Sheets/Sheet.swift @@ -8,6 +8,7 @@ import os.log struct Sheet: View { private let symLog = SymLogV(0) + let stack: CallStack @Environment(\.dismiss) var dismiss // call dismiss() to get rid of the sheet @EnvironmentObject private var debugViewC: DebugViewC @EnvironmentObject private var model: WalletModel @@ -26,7 +27,7 @@ struct Sheet: View { var cancelButton: some View { Button("Cancel") { logger.log("Cancel") - dismissTop() + dismissTop(stack.push()) } } @@ -38,7 +39,7 @@ struct Sheet: View { if let error2 = model.error2 { ErrorSheet(data: error2, devMode: developerMode) { logger.log("ErrorSheet dismissTop") - dismissTop() + dismissTop(stack.push()) } } else { sheetView diff --git a/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift b/TalerWallet1/Views/Sheets/WithdrawBankIntegrated/WithdrawAcceptDone.swift @@ -25,7 +25,7 @@ struct WithdrawAcceptDone: View { } func dismissTopAnimated(_ stack: CallStack) { symLog.log("ErrorSheet dismissTop") - dismissTop() + dismissTop(stack.push()) } var body: some View {