Add a search bar to the space filters screen

This commit is contained in:
Stefan Ceriu
2026-01-30 13:18:35 +02:00
committed by Stefan Ceriu
parent fdcf14f282
commit 15ff4e497b
4 changed files with 22 additions and 6 deletions

View File

@@ -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)

View File

@@ -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)