taler-ios

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

commit eb027e258a2f33afbd4ca88cd885fe5a35a8c231
parent d5039868262eadcb4086f63523fd4b811b9c4a83
Author: Marc Stibane <marc@taler.net>
Date:   Mon, 28 Apr 2025 14:14:46 +0200

fix for https://bugs.gnunet.org/view.php?id=9806

Diffstat:
MTalerWallet1/Views/Actions/ActionsSheet.swift | 21++++++++++++++++++++-
MTalerWallet1/Views/Main/MainView.swift | 31+++++++++++++++++++++++++------
2 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/TalerWallet1/Views/Actions/ActionsSheet.swift b/TalerWallet1/Views/Actions/ActionsSheet.swift @@ -95,7 +95,9 @@ struct ActionsSheet: View { @available(iOS 16.4, *) struct DualHeightSheet: View { let stack: CallStack + let selectedBalance: Balance? @Binding var qrButtonTapped: Bool + let dismissScanner: () -> Void let logger = Logger(subsystem: "net.taler.gnu", category: "DualSheet") @Environment(\.colorScheme) private var colorScheme @@ -119,7 +121,7 @@ struct DualHeightSheet: View { } var body: some View { - ScrollView { + let scrollView = ScrollView { let background = colorScheme == .dark ? WalletColors().gray6 : WalletColors().gray2 ActionsSheet(stack: stack.push(), @@ -175,5 +177,22 @@ struct DualHeightSheet: View { } .edgesIgnoringSafeArea(.all) .frame(maxHeight: innerHeight) + + if #available(iOS 18.3, *) { + scrollView + .sheet(isPresented: $qrButtonTapped, + onDismiss: dismissScanner + ) { + let qrSheet = AnyView(QRSheet(stack: stack.push(".sheet"), + selectedBalance: selectedBalance)) + let scanDetent: PresentationDetent = .fraction(SCANDETENT) + Sheet(stack: stack.push(), sheetView: qrSheet) + .presentationDetents([scanDetent]) + .transition(.opacity) + + } + } else { + scrollView + } } } diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift @@ -39,6 +39,7 @@ struct MainView: View { @State private var showScanner = false // @State private var showCameraAlert: Bool = false @State private var qrButtonTapped = false + @State private var qrButton2Tapped = false @State private var innerHeight: CGFloat = .zero @State private var userAction = 0 @@ -54,6 +55,12 @@ struct MainView: View { // AccessibilityNotification.Announcement(ClosingAnnouncement).post() // } } + private func dismissScanner() { + showActionSheet = false + qrButtonTapped = false + qrButton2Tapped = false + userAction += 1 + } var body: some View { #if PRINT_CHANGES @@ -117,7 +124,7 @@ struct MainView: View { Sheet(stack: stack.push(), sheetView: AnyView(sheet)) } .sheet(isPresented: $showScanner, - onDismiss: { showActionSheet = false; qrButtonTapped = false; userAction += 1 } + onDismiss: dismissScanner ) { let qrSheet = AnyView(QRSheet(stack: stack.push(".sheet"), selectedBalance: selectedBalance)) @@ -133,18 +140,30 @@ struct MainView: View { } } .sheet(isPresented: $showActionSheet, - onDismiss: { showScanner = false; qrButtonTapped = false; userAction += 1 } + onDismiss: { showScanner = false + qrButtonTapped = false + qrButton2Tapped = false + userAction += 1 } ) { if #available(iOS 16.4, *) { // let _ = logger.trace("❗️actionsSheet: small❗️ (showScanner == false)") - DualHeightSheet(stack: stack.push(), - qrButtonTapped: $qrButtonTapped) + if #available(iOS 18.3, *) { + DualHeightSheet(stack: stack.push(), + selectedBalance: selectedBalance, + qrButtonTapped: $qrButton2Tapped, + dismissScanner: dismissScanner) + } else { + DualHeightSheet(stack: stack.push(), + selectedBalance: selectedBalance, + qrButtonTapped: $qrButtonTapped, + dismissScanner: dismissScanner) + } } else { Group { - Spacer() + Spacer(minLength: 1) ScrollView { ActionsSheet(stack: stack.push(), - qrButtonTapped: $qrButtonTapped) + qrButtonTapped: $qrButtonTapped) .innerHeight($innerHeight) // .padding() }