commit 90be8f5e124150643cdbae1fa3c0c78d9a4ee5b0
parent c2742b96cfa6cc16f349ab8d9fe2a29c89cb7ea1
Author: Marc Stibane <marc@taler.net>
Date: Wed, 25 Sep 2024 07:58:07 +0200
hide TabBarView
Diffstat:
2 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/TalerWallet1/Views/HelperViews/TabBarView.swift b/TalerWallet1/Views/HelperViews/TabBarView.swift
@@ -9,6 +9,7 @@ import SwiftUI
struct TabBarView: View {
@Binding var selection: Tab
+ @Binding var hidden: Int
let onActionTab: () -> Void
@Environment(\.keyboardShowing) var keyboardShowing
@@ -38,7 +39,6 @@ struct TabBarView: View {
Text(tab.title)
.lineLimit(1)
.talerFont(.body)
- // .padding(.top, 2)
}
}
}
@@ -51,7 +51,7 @@ struct TabBarView: View {
var body: some View {
Group {
- if keyboardShowing {
+ if keyboardShowing || hidden > 0 {
EmptyView()
} else {
HStack(alignment: .bottom) {
diff --git a/TalerWallet1/Views/Main/MainView.swift b/TalerWallet1/Views/Main/MainView.swift
@@ -214,6 +214,19 @@ enum Tab: String, Hashable, CaseIterable {
// MARK: - Content
extension MainView {
+ class NavigationModel: ObservableObject {
+ @Published var tabBarHidden = 0
+
+ @Published var actionSelected: Int? = nil {
+ didSet {
+ if actionSelected != nil {
+ tabBarHidden += 1
+ } else {
+ tabBarHidden = 0
+ }
+ }
+ }
+ }
struct Content: View {
let logger: Logger
let stack: CallStack
@@ -233,6 +246,8 @@ extension MainView {
@EnvironmentObject private var viewState: ViewState // popToRootView()
@EnvironmentObject private var viewState2: ViewState2 // popToRootView()
+ @StateObject var navModel = NavigationModel()
+
@State private var shouldReloadBalances = 0
@State private var shouldReloadPending = 0
@State private var selectedTab: Tab = .balances
@@ -244,7 +259,6 @@ extension MainView {
@State private var amountToTransfer = Amount.zero(currency: EMPTYSTRING) // Update currency when used
@State private var summary: String = ""
@State private var showSpendingHint = true
- @State private var actionSelected: Int? = nil
@State private var myExchange: Exchange? = nil
private var openKycButton: some View {
@@ -307,7 +321,7 @@ extension MainView {
let balancesTitle = Tab.balances.title
// let actionTitle = Tab.actions.title
let settingsTitle = Tab.settings.title
- let tabBarView = TabBarView(selection: $selectedTab) {
+ let tabBarView = TabBarView(selection: tabSelection(), hidden: $navModel.tabBarHidden) {
if selectedTab != .balances {
selectedTab = .balances
}
@@ -364,19 +378,19 @@ extension MainView {
cameraAction: cameraAction)
.navigationTitle(balancesTitle)
.background( Group {
- NavigationLink(destination: sendDest, tag: 1, selection: $actionSelected)
+ NavigationLink(destination: sendDest, tag: 1, selection: $navModel.actionSelected)
{ EmptyView() }.frame(width: 0).opacity(0).hidden()
- NavigationLink(destination: requestDest, tag: 2, selection: $actionSelected)
+ NavigationLink(destination: requestDest, tag: 2, selection: $navModel.actionSelected)
{ EmptyView() }.frame(width: 0).opacity(0).hidden()
- NavigationLink(destination: depositDest, tag: 3, selection: $actionSelected)
+ NavigationLink(destination: depositDest, tag: 3, selection: $navModel.actionSelected)
{ EmptyView() }.frame(width: 0).opacity(0).hidden()
- NavigationLink(destination: manualWithdrawDest, tag: 4, selection: $actionSelected)
+ NavigationLink(destination: manualWithdrawDest, tag: 4, selection: $navModel.actionSelected)
{ EmptyView() }.frame(width: 0).opacity(0).hidden()
})
- .onNotification(.SendAction) { actionSelected = 1 }
- .onNotification(.RequestAction) { actionSelected = 2 }
- .onNotification(.DepositAction) { actionSelected = 3 }
- .onNotification(.WithdrawAction) { actionSelected = 4 }
+ .onNotification(.SendAction) { navModel.actionSelected = 1 }
+ .onNotification(.RequestAction) { navModel.actionSelected = 2 }
+ .onNotification(.DepositAction) { navModel.actionSelected = 3 }
+ .onNotification(.WithdrawAction){ navModel.actionSelected = 4 }
}.id(viewState.rootViewId) // any change to rootViewId triggers popToRootView behaviour
.navigationViewStyle(.stack)
.tag(Tab.balances)