OIMp2pReadyView.swift (2455B)
1 /* 2 * This file is part of GNU Taler, ©2022-26 Taler Systems S.A. 3 * See LICENSE.md 4 */ 5 /** 6 * @author Marc Stibane 7 */ 8 import SwiftUI 9 import taler_swift 10 11 // MARK: - 12 @available(iOS 16.4, *) 13 struct OIMp2pReadyView: View { 14 let stack: CallStack 15 @Binding var transactionId: String? 16 let talerTX: TalerTransaction 17 let scope: ScopeInfo 18 let action: () -> Void 19 20 @EnvironmentObject private var wrapper: NamespaceWrapper 21 22 @State private var sending = false // user tapped on Send 23 @State private var appeared = false 24 @State private var qrImage: UIImage? = nil 25 26 var body: some View { 27 // let _ = Self._printChanges() 28 29 OIMbackground() { 30 Group { 31 if let transactionId { 32 if talerTX.isPendingReady { 33 let details = talerTX.detailsToShow() 34 let keys = details.keys 35 if keys.contains(TALERURI) { 36 if let talerURI = details[TALERURI] { 37 if talerURI.count > 10 { 38 VStack { 39 Spacer() 40 let size = 240.0 41 QRGeneratorView(image: qrImage, size: size, 42 logo: nil, logoSize: size / 4) 43 .frame(maxWidth: .infinity, alignment: .center) 44 .accessibilityLabel(Text("QR Code", comment: "a11y")) 45 Spacer() 46 } 47 .task { 48 if let image = QRCode(from: talerURI) { 49 qrImage = image 50 } 51 } 52 } 53 } 54 } 55 } 56 } else { 57 LoadingView(stack: stack.push(), 58 scopeInfo: scope, 59 message: nil) 60 } 61 } 62 // .border(.red) 63 } 64 .onTapGesture(perform: action) 65 .task { 66 withAnimation(.basic1) { 67 appeared = true 68 } 69 } 70 } 71 }