Sheet.swift (2431B)
1 /* 2 * This file is part of GNU Taler, ©2022-25 Taler Systems S.A. 3 * See LICENSE.md 4 */ 5 /** 6 * @author Marc Stibane 7 */ 8 import SwiftUI 9 import SymLog 10 import os.log 11 12 struct Sheet: View { 13 private let symLog = SymLogV(0) 14 let stack: CallStack 15 var sheetView: AnyView 16 17 @Environment(\.dismiss) var dismiss // call dismiss() to get rid of the sheet 18 @EnvironmentObject private var debugViewC: DebugViewC 19 @EnvironmentObject private var model: WalletModel 20 @AppStorage("talerFontIndex") var talerFontIndex: Int = 0 21 #if DEBUG 22 @AppStorage("developerMode") var developerMode: Bool = true 23 #else 24 @AppStorage("developerMode") var developerMode: Bool = false 25 #endif 26 27 let logger = Logger(subsystem: "net.taler.gnu", category: "Sheet") 28 29 var cancelButton: some View { 30 Button("Cancel") { 31 logger.log("Cancel") 32 dismissTop(stack.push()) 33 } 34 } 35 36 var body: some View { 37 let idString = debugViewC.sheetID > 0 ? String(debugViewC.sheetID) 38 : EMPTYSTRING // show nothing if 0 39 ZStack { 40 NavigationView { 41 sheetView 42 .navigationBarTitleDisplayMode(.automatic) 43 .background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all)) 44 } 45 .navigationViewStyle(.stack) 46 .talerNavBar(talerFontIndex: talerFontIndex) 47 .overlay(alignment: .top) { 48 // Show the viewID on top of the sheet's NavigationView 49 Text(idString) 50 .foregroundColor(.purple) 51 .font(.system(size: 11)) // no talerFont 52 .monospacedDigit() 53 .edgesIgnoringSafeArea(.top) 54 .id("sheetID") 55 .accessibilityLabel(Text("Sheet.ID.", comment: "a11y")) 56 .accessibilityValue(idString) 57 } 58 if let error2 = model.error2 { 59 ErrorView(data: error2, devMode: developerMode) { 60 model.setError(nil) 61 logger.log("ErrorSheet dismissTop") 62 dismissTop(stack.push()) 63 } 64 .background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all)) 65 } 66 } 67 .onDisappear { 68 symLog.log("❗️❗️Sheet onDisappear") 69 } 70 } 71 }