Fix visibility of navigation bar when searching the forwarding screen. (#1357)

* Fix visibility of navigation bar when searching the forwarding screen.

- Update Introspect and replace deprecated calls with new ones.
- Remove obsoleted colours from DesignKit.
This commit is contained in:
Doug
2023-07-19 16:55:21 +01:00
committed by GitHub
parent b677e5cbd7
commit 66eea98b33
14 changed files with 39 additions and 78 deletions
@@ -1,26 +0,0 @@
//
// Copyright 2022 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import Introspect
import SwiftUI
extension View {
/// Finds a `UICollectionView` from a `SwiftUI.List`, or `SwiftUI.List` child.
/// Stop gap until https://github.com/siteline/SwiftUI-Introspect/pull/169
func introspectCollectionView(customize: @escaping (UICollectionView) -> Void) -> some View {
introspect(selector: TargetViewSelector.ancestorOrSiblingContaining, customize: customize)
}
}
@@ -15,6 +15,7 @@
//
import SwiftUI
import SwiftUIIntrospect
extension View {
/// Disable the interactive dismiss while the search is on.
@@ -28,6 +29,21 @@ extension View {
func dismissSearchOnDisappear() -> some View {
modifier(DismissSearchOnDisappear())
}
/// Configures a searchable's underlying search controller.
/// - Parameters:
/// - hidesNavigationBar: A Boolean indicating whether to hide the navigation bar when searching.
/// - showsCancelButton: A Boolean indicating whether the search controller manages the visibility of the search bar’s cancel button.
///
/// This modifier may be moved into Compound once styles for the various configuration options have been defined.
func searchableConfiguration(hidesNavigationBar: Bool = true,
showsCancelButton: Bool = true) -> some View {
introspect(.navigationStack, on: .iOS(.v16), scope: .ancestor) { navigationController in
guard let searchController = navigationController.navigationBar.topItem?.searchController else { return }
searchController.hidesNavigationBarDuringPresentation = hidesNavigationBar
searchController.automaticallyShowsCancelButton = showsCancelButton
}
}
}
private struct InteractiveDismissSearchModifier: ViewModifier {
@@ -27,8 +27,7 @@ struct ServerConfirmationScreen: View {
}
.background()
.environment(\.backgroundStyle, AnyShapeStyle(Color.compound.bgCanvasDefault))
.introspectViewController { viewController in
guard let window = viewController.view.window else { return }
.introspect(.window, on: .iOS(.v16)) { window in
context.send(viewAction: .updateWindow(window))
}
}
@@ -49,8 +49,7 @@ struct SoftLogoutScreen: View {
}
.background(Color.compound.bgCanvasDefault.ignoresSafeArea())
.alert(item: $context.alertInfo)
.introspectViewController { viewController in
guard let window = viewController.view.window else { return }
.introspect(.window, on: .iOS(.v16)) { window in
context.send(viewAction: .updateWindow(window))
}
}
@@ -17,6 +17,7 @@
import Combine
import Compound
import SwiftUI
import SwiftUIIntrospect
struct HomeScreen: View {
enum Constants {
@@ -69,7 +70,7 @@ struct HomeScreen: View {
.disableAutocorrection(true)
}
}
.introspectScrollView { scrollView in
.introspect(.scrollView, on: .iOS(.v16)) { scrollView in
guard scrollView != scrollViewAdapter.scrollView else { return }
scrollViewAdapter.scrollView = scrollView
}
@@ -30,9 +30,7 @@ struct InviteUsersScreen: View {
.disableInteractiveDismissOnSearch()
.dismissSearchOnDisappear()
.searchable(text: $context.searchQuery, placement: .navigationBarDrawer(displayMode: .always), prompt: L10n.commonSearchForSomeone)
.introspectSearchController { searchViewController in
searchViewController.hidesNavigationBarDuringPresentation = false
}
.searchableConfiguration(hidesNavigationBar: false)
.compoundSearchField()
.alert(item: $context.alertInfo)
.background(ViewFrameReader(frame: $frame))
@@ -46,6 +46,7 @@ struct MessageForwardingScreen: View {
}
}
.searchable(text: $context.searchQuery, placement: .navigationBarDrawer(displayMode: .always))
.searchableConfiguration(hidesNavigationBar: false)
.compoundSearchField()
.disableAutocorrection(true)
}
@@ -18,8 +18,6 @@ import Combine
import Foundation
import SwiftUI
import Introspect
struct RoomHeaderView: View {
@ObservedObject var context: RoomScreenViewModel.Context