commit 148cf1b624d27377cebb2560754f33d92a4a8232
parent 6471011a803be639ac9ab37bba0ebc91283238c1
Author: Marc Stibane <marc@taler.net>
Date: Thu, 15 Feb 2024 06:53:42 +0100
popToRootView Banking
Diffstat:
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/TalerWallet1/Controllers/TalerWallet1App.swift b/TalerWallet1/Controllers/TalerWallet1App.swift
@@ -17,7 +17,8 @@ import SymLog
struct TalerWallet1App: App {
private let symLog = SymLogV()
@Environment(\.scenePhase) private var phase
- @StateObject private var viewState = ViewState.shared // popToRootView()
+ @StateObject private var viewState = ViewState.shared // popToRootView()
+ @StateObject private var viewState2 = ViewState2.shared // popToRootView()
@State private var isActive = true
@State private var soundPlayed = false
@@ -39,6 +40,7 @@ struct TalerWallet1App: App {
MainView(logger: logger, stack: CallStack("App"), soundPlayed: $soundPlayed)
.environmentObject(debugViewC) // change viewID / sheetID
.environmentObject(viewState) // popToRoot
+ .environmentObject(viewState2) // popToRoot
.environmentObject(controller)
.environmentObject(model)
/// external events are taler:// or payto:// URLs passed to this app
@@ -104,9 +106,22 @@ final class ViewState : ObservableObject {
@Published var rootViewId = UUID()
let logger = Logger(subsystem: "net.taler.gnu", category: "ViewState")
- public func popToRootView(_ stack: CallStack) -> Void {
+ public func popToRootView(_ stack: CallStack?) -> Void {
logger.info("popToRootView")
- rootViewId = UUID() // setting a new ID will cause tableView popToRootView behaviour
+ rootViewId = UUID() // setting a new ID will cause 1st NavStack popToRootView behaviour
+ }
+
+ private init() { }
+}
+
+final class ViewState2 : ObservableObject {
+ static let shared = ViewState2()
+ @Published var rootViewId = UUID()
+ let logger = Logger(subsystem: "net.taler.gnu", category: "ViewState2")
+
+ public func popToRootView(_ stack: CallStack?) -> Void {
+ logger.info("popToRootView")
+ rootViewId = UUID() // setting a new ID will cause 2nd NavStack popToRootView behaviour
}
private init() { }
diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift
@@ -89,6 +89,7 @@ extension MainView {
@EnvironmentObject private var controller: Controller
@EnvironmentObject private var model: WalletModel
@EnvironmentObject private var viewState: ViewState // popToRootView()
+ @EnvironmentObject private var viewState2: ViewState2 // popToRootView()
let balancesTitle = String(localized: "TitleBalances", defaultValue: "Balances")
let exchangesTitle = String(localized: "TitleExchanges", defaultValue: "Banking")
let settingsTitle = String(localized: "TitleSettings", defaultValue: "Settings")
@@ -166,7 +167,8 @@ extension MainView {
ExchangeListView(stack: stack.push(exchangesTitle),
balances: $balances,
navTitle: exchangesTitle)
- }.navigationViewStyle(.stack)
+ }.id(viewState2.rootViewId) // any change to rootViewId triggers popToRootView behaviour
+ .navigationViewStyle(.stack)
.tabItem {
Image(systemName: "building.columns") // "arrow.triangle.2.circlepath")
.accessibilityLabel(exchangesTitle)