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:
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()
}