Add a search bar to the space filters screen
This commit is contained in:
committed by
Stefan Ceriu
parent
fdcf14f282
commit
15ff4e497b
@@ -15,9 +15,22 @@ enum ChatsSpaceFiltersScreenViewModelAction {
|
||||
struct ChatsSpaceFiltersScreenViewState: BindableState {
|
||||
var filters = [SpaceServiceFilter]()
|
||||
var bindings: ChatsSpaceFiltersScreenViewStateBindings
|
||||
|
||||
var visibleFilters: [SpaceServiceFilter] {
|
||||
if bindings.searchQuery.isEmpty {
|
||||
return filters
|
||||
}
|
||||
|
||||
return filters.filter { filter in
|
||||
filter.room.name.localizedStandardContains(bindings.searchQuery) ||
|
||||
(filter.room.canonicalAlias ?? "").localizedStandardContains(bindings.searchQuery)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct ChatsSpaceFiltersScreenViewStateBindings { }
|
||||
struct ChatsSpaceFiltersScreenViewStateBindings {
|
||||
var searchQuery = ""
|
||||
}
|
||||
|
||||
enum ChatsSpaceFiltersScreenViewAction: CustomStringConvertible {
|
||||
case confirm(SpaceServiceFilter)
|
||||
|
||||
@@ -15,13 +15,16 @@ struct ChatsSpaceFiltersScreen: View {
|
||||
NavigationStack {
|
||||
ScrollView {
|
||||
LazyVStack(spacing: 0) {
|
||||
ForEach(context.viewState.filters) { filter in
|
||||
ForEach(context.viewState.visibleFilters) { filter in
|
||||
ChatsSpaceFilterCell(filter: filter,
|
||||
mediaProvider: context.mediaProvider) { filter in
|
||||
context.send(viewAction: .confirm(filter))
|
||||
}
|
||||
}
|
||||
}
|
||||
.searchable(text: $context.searchQuery, placement: .navigationBarDrawer)
|
||||
.focusSearchIfHardwareKeyboardAvailable()
|
||||
.compoundSearchField()
|
||||
}
|
||||
.toolbar { toolbar }
|
||||
.navigationTitle(L10n.screenRoomlistYourSpaces)
|
||||
|
||||
Reference in New Issue
Block a user