taler-ios

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

commit 83807230f6918ae47c17d1a495ded0f026763116
parent 4edb583bccd5c7273407e6823403d8ec6d0d57c7
Author: Marc Stibane <marc@taler.net>
Date:   Sun, 16 Feb 2025 15:57:35 +0100

TabBarModel

Diffstat:
MTalerWallet.xcodeproj/project.pbxproj | 12++++++------
MTalerWallet1/Views/HelperViews/View+NavLink.swift | 2+-
MTalerWallet1/Views/Main/MainView.swift | 26+++++++++++++-------------
DTalerWallet1/Views/Main/NavigationModel.swift | 35-----------------------------------
ATalerWallet1/Views/Main/TabBarModel.swift | 35+++++++++++++++++++++++++++++++++++
MTalerWallet1/Views/Settings/Exchange/ExchangeRowView.swift | 8++++----
6 files changed, 59 insertions(+), 59 deletions(-)

diff --git a/TalerWallet.xcodeproj/project.pbxproj b/TalerWallet.xcodeproj/project.pbxproj @@ -312,8 +312,8 @@ 4EEC157A29F9427F00D46A03 /* QRSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEC157929F9427F00D46A03 /* QRSheet.swift */; }; 4EEC3A712B2285A200D05F9D /* WithdrawExchangeV.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEC3A702B2285A200D05F9D /* WithdrawExchangeV.swift */; }; 4EEC3A722B2285A200D05F9D /* WithdrawExchangeV.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEC3A702B2285A200D05F9D /* WithdrawExchangeV.swift */; }; - 4EED38552D140C1400F6C038 /* NavigationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED38542D140C1400F6C038 /* NavigationModel.swift */; }; - 4EED38562D140C1400F6C038 /* NavigationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED38542D140C1400F6C038 /* NavigationModel.swift */; }; + 4EED38552D140C1400F6C038 /* TabBarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED38542D140C1400F6C038 /* TabBarModel.swift */; }; + 4EED38562D140C1400F6C038 /* TabBarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED38542D140C1400F6C038 /* TabBarModel.swift */; }; 4EED38582D1485AB00F6C038 /* ForEachWithIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED38572D1485AB00F6C038 /* ForEachWithIndex.swift */; }; 4EED38592D1485AB00F6C038 /* ForEachWithIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EED38572D1485AB00F6C038 /* ForEachWithIndex.swift */; }; 4EF840A72A0B85F400EE0D47 /* CopyShare.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF840A62A0B85F400EE0D47 /* CopyShare.swift */; }; @@ -524,7 +524,7 @@ 4EEC157729F9032900D46A03 /* Sheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sheet.swift; sourceTree = "<group>"; }; 4EEC157929F9427F00D46A03 /* QRSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRSheet.swift; sourceTree = "<group>"; }; 4EEC3A702B2285A200D05F9D /* WithdrawExchangeV.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WithdrawExchangeV.swift; sourceTree = "<group>"; }; - 4EED38542D140C1400F6C038 /* NavigationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationModel.swift; sourceTree = "<group>"; }; + 4EED38542D140C1400F6C038 /* TabBarModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarModel.swift; sourceTree = "<group>"; }; 4EED38572D1485AB00F6C038 /* ForEachWithIndex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ForEachWithIndex.swift; sourceTree = "<group>"; }; 4EF840A62A0B85F400EE0D47 /* CopyShare.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CopyShare.swift; sourceTree = "<group>"; }; 4EFA395F2AA7946B00742548 /* ToSButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToSButtonView.swift; sourceTree = "<group>"; }; @@ -867,7 +867,7 @@ isa = PBXGroup; children = ( 4EB095442989CBFE0043A8A1 /* MainView.swift */, - 4EED38542D140C1400F6C038 /* NavigationModel.swift */, + 4EED38542D140C1400F6C038 /* TabBarModel.swift */, 4EB095452989CBFE0043A8A1 /* ErrorView.swift */, 4EB095392989CBFE0043A8A1 /* WalletEmptyView.swift */, ); @@ -1343,7 +1343,7 @@ 4E3EAE5F2A990778009F1BE8 /* QRSheet.swift in Sources */, 4E3EAE602A990778009F1BE8 /* P2pReceiveURIView.swift in Sources */, 4E3EAE612A990778009F1BE8 /* ListStyle.swift in Sources */, - 4EED38552D140C1400F6C038 /* NavigationModel.swift in Sources */, + 4EED38552D140C1400F6C038 /* TabBarModel.swift in Sources */, 4E3EAE622A990778009F1BE8 /* TransactionSummaryV.swift in Sources */, 4E3EAE632A990778009F1BE8 /* WalletCore.swift in Sources */, 4E3EAE642A990778009F1BE8 /* LaunchAnimationView.swift in Sources */, @@ -1484,7 +1484,7 @@ 4EEC157A29F9427F00D46A03 /* QRSheet.swift in Sources */, 4E3B4BC12A41E6C200CC88B8 /* P2pReceiveURIView.swift in Sources */, 4E6EDD872A363D8D0031D520 /* ListStyle.swift in Sources */, - 4EED38562D140C1400F6C038 /* NavigationModel.swift in Sources */, + 4EED38562D140C1400F6C038 /* TabBarModel.swift in Sources */, 4EB095582989CBFE0043A8A1 /* TransactionSummaryV.swift in Sources */, 4EB095202989CBCB0043A8A1 /* WalletCore.swift in Sources */, 4EB095672989CBFE0043A8A1 /* LaunchAnimationView.swift in Sources */, diff --git a/TalerWallet1/Views/HelperViews/View+NavLink.swift b/TalerWallet1/Views/HelperViews/View+NavLink.swift @@ -48,7 +48,7 @@ struct NavLink <Content : View> : View { } var body: some View { - if tag != 0 { // actions: $navModel.actionSelected will hide the tabBar + if tag != 0 { // actions: $tabBarModel.actionSelected will hide the tabBar NavigationLink(destination: content, tag: tag, selection: $selection) { EmptyView() }.frame(width: 0).opacity(0).hidden() } else { // shortcuts, AddButton diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift @@ -236,7 +236,7 @@ extension MainView { @EnvironmentObject private var viewState: ViewState // popToRootView() @EnvironmentObject private var viewState2: ViewState2 // popToRootView() - @StateObject var navModel = NavigationModel() + @StateObject var tabBarModel = TabBarModel() @State private var shouldReloadBalances = 0 @State private var shouldReloadTransactions = 0 @@ -292,8 +292,8 @@ extension MainView { } private var isBalances: Bool { self.selectedTab == .balances} private func triggerAction(_ action: Int) { - navModel.actionSelected = isBalances ? action // 1..4 - : action + 4 // 5..8 + tabBarModel.actionSelected = isBalances ? action // 1..4 + : action + 4 // 5..8 } private static func className() -> String {"\(self)"} @@ -334,16 +334,16 @@ extension MainView { isSheet: false) /// each NavigationView needs its own NavLinks let balanceActions = Group { // actionSelected will hide the tabBar - NavLink(1, $navModel.actionSelected) { sendDest } - NavLink(2, $navModel.actionSelected) { requestDest } - NavLink(3, $navModel.actionSelected) { depositDest } - NavLink(4, $navModel.actionSelected) { manualWithdrawDest } + NavLink(1, $tabBarModel.actionSelected) { sendDest } + NavLink(2, $tabBarModel.actionSelected) { requestDest } + NavLink(3, $tabBarModel.actionSelected) { depositDest } + NavLink(4, $tabBarModel.actionSelected) { manualWithdrawDest } } let settingsActions = Group { - NavLink(5, $navModel.actionSelected) { sendDest } - NavLink(6, $navModel.actionSelected) { requestDest } - NavLink(7, $navModel.actionSelected) { depositDest } - NavLink(8, $navModel.actionSelected) { manualWithdrawDest } + NavLink(5, $tabBarModel.actionSelected) { sendDest } + NavLink(6, $tabBarModel.actionSelected) { requestDest } + NavLink(7, $tabBarModel.actionSelected) { depositDest } + NavLink(8, $tabBarModel.actionSelected) { manualWithdrawDest } } /// tab titles, and invisible tabItems which are only used for a11y let balancesTitle = Tab.balances.title // "Balances" @@ -370,7 +370,7 @@ extension MainView { .background(settingsActions) }.navigationViewStyle(.stack) /// our custom tabBar with the Actions button in the middle - let tabBarView = TabBarView(selection: tabSelection(), userAction: $userAction, hidden: $navModel.tabBarHidden) { + let tabBarView = TabBarView(selection: tabSelection(), userAction: $userAction, hidden: $tabBarModel.tabBarHidden) { logger.log("onActionTab") showActionSheet = true } onActionDrag: { @@ -395,7 +395,7 @@ extension MainView { .ignoresSafeArea(.keyboard, edges: .bottom) .accessibilityHidden(true) // for a11y we use the original tabBar, not our custom one } // ZStack - .environmentObject(navModel) + .environmentObject(tabBarModel) .frame(maxWidth: .infinity, maxHeight: .infinity) .onNotification(.SendAction) { triggerAction(1) } .onNotification(.RequestAction) { triggerAction(2) } diff --git a/TalerWallet1/Views/Main/NavigationModel.swift b/TalerWallet1/Views/Main/NavigationModel.swift @@ -1,35 +0,0 @@ -/* - * This file is part of GNU Taler, ©2022-24 Taler Systems S.A. - * See LICENSE.md - */ -/** - * Controller - * - * @author Marc Stibane - */ -import Foundation -import SwiftUI - -class NavigationModel: ObservableObject { - @Published var tabBarHidden = 0 - - @Published var tosView: Int? = nil { - didSet { - if tosView != nil { - tabBarHidden += 1 - } else if actionSelected == nil { - tabBarHidden = 0 - } - } - } - - @Published var actionSelected: Int? = nil { - didSet { - if actionSelected != nil { - tabBarHidden += 1 - } else if tosView == nil { - tabBarHidden = 0 - } - } - } -} diff --git a/TalerWallet1/Views/Main/TabBarModel.swift b/TalerWallet1/Views/Main/TabBarModel.swift @@ -0,0 +1,35 @@ +/* + * This file is part of GNU Taler, ©2022-24 Taler Systems S.A. + * See LICENSE.md + */ +/** + * Controller + * + * @author Marc Stibane + */ +import Foundation +import SwiftUI + +class TabBarModel: ObservableObject { + @Published var tabBarHidden = 0 + + @Published var tosView: Int? = nil { + didSet { + if tosView != nil { + tabBarHidden += 1 + } else if actionSelected == nil { + tabBarHidden = 0 + } + } + } + + @Published var actionSelected: Int? = nil { + didSet { + if actionSelected != nil { + tabBarHidden += 1 + } else if tosView == nil { + tabBarHidden = 0 + } + } + } +} diff --git a/TalerWallet1/Views/Settings/Exchange/ExchangeRowView.swift b/TalerWallet1/Views/Settings/Exchange/ExchangeRowView.swift @@ -18,7 +18,7 @@ struct ExchangeRowView: View { @Environment(\.sizeCategory) var sizeCategory @EnvironmentObject private var controller: Controller @EnvironmentObject private var model: WalletModel - @EnvironmentObject private var navModel: NavigationModel + @EnvironmentObject private var tabBarModel: TabBarModel @AppStorage("minimalistic") var minimalistic: Bool = false var body: some View { @@ -52,7 +52,7 @@ struct ExchangeRowView: View { viewID: VIEW_WITHDRAW_TOS, acceptAction: nil) // pop back to here let actions = Group { - NavLink(index, $navModel.tosView) { showToS } + NavLink(index, $tabBarModel.tosView) { showToS } } Group { @@ -60,10 +60,10 @@ struct ExchangeRowView: View { cellView .background(actions) .onTapGesture { - navModel.tosView = index + tabBarModel.tosView = index } // .task { -// navModel.tosView = false +// tabBarModel.tosView = false // } }.listRowSeparator(.hidden) }