taler-ios

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

commit 67566284d6b30a74281c8b6f4ec1a3e039adf38d
parent 39c1bf285e0abf7ed49ec49c3e71d9ee2ec629ef
Author: Marc Stibane <marc@taler.net>
Date:   Thu, 24 Apr 2025 05:59:33 +0200

oimMode only for GNU Taler, not for Taler Wallet

Diffstat:
MTalerWallet1/Controllers/Controller.swift | 17+++++++----------
MTalerWallet1/Helper/UserDefaults+oimMode.swift | 6------
MTalerWallet1/Settings.bundle/Root.plist | 10----------
MTalerWallet1/Views/Actions/Peer2peer/P2PSubjectV.swift | 2++
MTalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift | 2++
MTalerWallet1/Views/Balances/BalancesListView.swift | 2++
MTalerWallet1/Views/Main/MainView.swift | 2++
MTalerWallet1/Views/Settings/SettingsView.swift | 11++++-------
MTalerWallet1/Views/Sheets/Payment/PaymentView.swift | 2++
9 files changed, 21 insertions(+), 33 deletions(-)

diff --git a/TalerWallet1/Controllers/Controller.swift b/TalerWallet1/Controllers/Controller.swift @@ -55,9 +55,10 @@ class Controller: ObservableObject { @Published var currencyTicker: Int = 0 // updates whenever a new currency is added @Published var isConnected: Bool = true - @Published var oimModeEnabled: Bool = false +#if OIM @Published var oimModeActive: Bool = false @Published var oimSheetActive: Bool = false +#endif @Published var diagnosticModeEnabled: Bool = false @AppStorage("useHaptics") var useHaptics: Bool = true // extension mustn't define this, so it must be here @AppStorage("playSoundsI") var playSoundsI: Int = 1 // extension mustn't define this, so it must be here @@ -73,22 +74,18 @@ class Controller: ObservableObject { private let monitor = NWPathMonitor() - private var oimModeObservation: NSKeyValueObservation? private var diagnosticModeObservation: NSKeyValueObservation? - +#if OIM func setOIMmode(for newOrientation: UIDeviceOrientation, _ sheetActive: Bool) { let isLandscapeRight = newOrientation == .landscapeRight - oimSheetActive = sheetActive && oimModeEnabled && isLandscapeRight - oimModeActive = sheetActive ? false - : oimModeEnabled ? isLandscapeRight - : false + oimSheetActive = sheetActive && isLandscapeRight + oimModeActive = sheetActive ? false + : isLandscapeRight } +#endif func startObserving() { let defaults = UserDefaults.standard - self.oimModeObservation = defaults.observe(\.oimModeEnabled, options: [.new, .old, .prior, .initial]) { [weak self](_, _) in - self?.oimModeEnabled = UserDefaults.standard.oimModeEnabled - } self.diagnosticModeObservation = defaults.observe(\.diagnosticModeEnabled, options: [.new, .old,.prior,.initial]) { [weak self](_, _) in self?.diagnosticModeEnabled = UserDefaults.standard.diagnosticModeEnabled } diff --git a/TalerWallet1/Helper/UserDefaults+oimMode.swift b/TalerWallet1/Helper/UserDefaults+oimMode.swift @@ -9,12 +9,6 @@ import Foundation // https://developer.apple.com/forums/thread/764675?answerId=805946022#805946022 extension UserDefaults { - private static let oimModeEnabledKey = "oimModeEnabled" - @objc dynamic var oimModeEnabled: Bool { - get { bool(forKey: UserDefaults.oimModeEnabledKey) } - set { set(newValue, forKey: UserDefaults.oimModeEnabledKey) } - } - private static let diagnosticModeEnabledKey = "diagnosticModeEnabled" @objc dynamic var diagnosticModeEnabled: Bool { get { bool(forKey: UserDefaults.diagnosticModeEnabledKey) } diff --git a/TalerWallet1/Settings.bundle/Root.plist b/TalerWallet1/Settings.bundle/Root.plist @@ -16,16 +16,6 @@ <key>DefaultValue</key> <false/> </dict> - <dict> - <key>Type</key> - <string>PSToggleSwitchSpecifier</string> - <key>Title</key> - <string>OIM Mode</string> - <key>Key</key> - <string>oimModeEnabled</string> - <key>DefaultValue</key> - <false/> - </dict> </array> </dict> </plist> diff --git a/TalerWallet1/Views/Actions/Peer2peer/P2PSubjectV.swift b/TalerWallet1/Views/Actions/Peer2peer/P2PSubjectV.swift @@ -176,6 +176,7 @@ struct P2PSubjectV: View { } scrollView +#if OIM .overlay { if controller.oimModeActive { OIMSubjectView(stack: stack.push(), @@ -185,6 +186,7 @@ struct P2PSubjectV: View { .environmentObject(NamespaceWrapper(namespace)) // keep OIMviews apart } } +#endif } } // MARK: - diff --git a/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift b/TalerWallet1/Views/Actions/Peer2peer/SendAmountV.swift @@ -104,6 +104,7 @@ struct SendAmountV: View { .background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all)) .task { await viewDidLoad() } .task(id: balanceIndex + (1000 * controller.currencyTicker)) { await newBalance() } +#if OIM .overlay { if controller.oimModeActive { OIMEditView(stack: stack.push(), @@ -114,6 +115,7 @@ struct SendAmountV: View { .environmentObject(NamespaceWrapper(namespace)) // keep OIMviews apart } } +#endif if #available(iOS 16.0, *) { if #available(iOS 16.4, *) { scrollView.toolbar(.hidden, for: .tabBar) diff --git a/TalerWallet1/Views/Balances/BalancesListView.swift b/TalerWallet1/Views/Balances/BalancesListView.swift @@ -69,6 +69,7 @@ struct BalancesListView: View { await refresh() } } +#if OIM .overlay { if controller.oimModeActive { let balance = controller.balances.first @@ -79,6 +80,7 @@ struct BalancesListView: View { .environmentObject(NamespaceWrapper(namespace)) // keep OIMviews apart } } +#endif } } } diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift @@ -153,11 +153,13 @@ struct MainView: View { } // iOS 15 } } +#if OIM .onRotate { newOrientation in let isSheetActive = showActionSheet || showScanner || showUrlSheet controller.setOIMmode(for: newOrientation, isSheetActive) tabBarModel.oimActive = controller.oimModeActive ? 1 : 0 } +#endif .onOpenURL { url in symLog.log(".onOpenURL: \(url)") // will be called on a taler:// scheme either diff --git a/TalerWallet1/Views/Settings/SettingsView.swift b/TalerWallet1/Views/Settings/SettingsView.swift @@ -43,7 +43,6 @@ struct SettingsView: View { @AppStorage("minimalistic") var minimalistic: Bool = false @AppStorage("localConsoleL") var localConsoleL: Bool = false // for Logs @AppStorage("localConsoleO") var localConsoleO: Int = 0 // for Observability - @AppStorage("sierraLeone") var sierraLeone: Bool = false @AppStorage("oimTwoRows") var oimTwoRows: Bool = false @State private var checkDisabled = false @@ -147,12 +146,10 @@ struct SettingsView: View { consoleManager.isVisible = localConsoleO != 0 || localConsoleL consoleManager.clear() } - if controller.oimModeEnabled { - SettingsToggle(name: String(localized: "Two rows"), value: $oimTwoRows, id1: "oimTwoRows", - description: minimalistic ? nil : String(localized: "OIM denomination layout")) - SettingsToggle(name: String(localized: "Sierra Leone"), value: $sierraLeone, id1: "sierraLeone", - description: minimalistic ? nil : String(localized: "Currency to be used for OIM")) - } +#if OIM + SettingsToggle(name: String(localized: "Two rows"), value: $oimTwoRows, id1: "oimTwoRows", + description: minimalistic ? nil : String(localized: "OIM denomination layout")) +#endif #if DEBUG let showDiagnostic = diagnosticModeEnabled #else diff --git a/TalerWallet1/Views/Sheets/Payment/PaymentView.swift b/TalerWallet1/Views/Sheets/Payment/PaymentView.swift @@ -298,11 +298,13 @@ struct PaymentView: View, Sendable { } symLog.log("Info(for: \(currency)) loaded: \(currencyInfo.name)") } +#if OIM .overlay { if controller.oimSheetActive { OIMPayView(stack: stack.push(), scope: firstScope, amount: effective) } } +#endif } else { LoadingView(stack: stack.push(), scopeInfo: nil, message: url.host) .task { await viewDidLoad() }