ensure nav bar is hidden if searchable field is active in home view

This commit is contained in:
Satindar Dhillon 2022-05-09 16:18:59 -07:00
parent bca28bb699
commit e2f08e7141
4 changed files with 17 additions and 7 deletions

View file

@ -14,7 +14,6 @@ struct FeedCardNavigationLink: View {
let destination = LinkItemDetailView(viewModel: LinkItemDetailViewModel(item: item, homeFeedViewModel: viewModel))
#if os(iOS)
let modifiedDestination = destination
.navigationBarHidden(true)
.navigationTitle("")
#else
let modifiedDestination = destination
@ -54,7 +53,6 @@ struct GridCardNavigationLink: View {
let destination = LinkItemDetailView(viewModel: LinkItemDetailViewModel(item: item, homeFeedViewModel: viewModel))
#if os(iOS)
let modifiedDestination = destination
.navigationBarHidden(true)
.navigationTitle("")
#else
let modifiedDestination = destination

View file

@ -27,8 +27,7 @@ private let enableGrid = UIDevice.isIPad || FeatureFlag.enableGridCardsOnPhone
loadItems(isRefresh: true)
}
.searchable(
text: $viewModel.searchTerm,
placement: .navigationBarDrawer
text: $viewModel.searchTerm
) {
if viewModel.searchTerm.isEmpty {
Text("Inbox").searchCompletion("in:inbox ")

View file

@ -9,7 +9,7 @@ struct HomeView: View {
NavigationView {
HomeFeedContainerView(viewModel: viewModel)
}
.navigationViewStyle(StackNavigationViewStyle())
.navigationViewStyle(.stack)
.accentColor(.appGrayTextContrast)
} else {
HomeFeedContainerView(viewModel: viewModel)

View file

@ -136,14 +136,27 @@ struct LinkItemDetailView: View {
)
}
// We always want this hidden but setting it to false initially
// fixes a bug where SwiftUI searchable will always show the nav bar
// if the search field is active when pushing.
@State var hideNavBar = false
var body: some View {
#if os(iOS)
if viewModel.item.isPDF {
fixedNavBarReader
.task { viewModel.trackReadEvent() }
.navigationBarHidden(hideNavBar)
.task {
hideNavBar = true
viewModel.trackReadEvent()
}
} else {
WebReaderContainerView(item: viewModel.item, homeFeedViewModel: viewModel.homeFeedViewModel)
.task { viewModel.trackReadEvent() }
.navigationBarHidden(hideNavBar)
.task {
hideNavBar = true
viewModel.trackReadEvent()
}
}
#else
fixedNavBarReader