mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
Add a search bar to the space filters screen
This commit is contained in:
committed by
Stefan Ceriu
parent
955ec0c8a9
commit
e48fb52701
+14
-1
@@ -15,9 +15,22 @@ enum ChatsSpaceFiltersScreenViewModelAction {
|
|||||||
struct ChatsSpaceFiltersScreenViewState: BindableState {
|
struct ChatsSpaceFiltersScreenViewState: BindableState {
|
||||||
var filters = [SpaceServiceFilter]()
|
var filters = [SpaceServiceFilter]()
|
||||||
var bindings: ChatsSpaceFiltersScreenViewStateBindings
|
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 {
|
enum ChatsSpaceFiltersScreenViewAction: CustomStringConvertible {
|
||||||
case confirm(SpaceServiceFilter)
|
case confirm(SpaceServiceFilter)
|
||||||
|
|||||||
@@ -15,13 +15,16 @@ struct ChatsSpaceFiltersScreen: View {
|
|||||||
NavigationStack {
|
NavigationStack {
|
||||||
ScrollView {
|
ScrollView {
|
||||||
LazyVStack(spacing: 0) {
|
LazyVStack(spacing: 0) {
|
||||||
ForEach(context.viewState.filters) { filter in
|
ForEach(context.viewState.visibleFilters) { filter in
|
||||||
ChatsSpaceFilterCell(filter: filter,
|
ChatsSpaceFilterCell(filter: filter,
|
||||||
mediaProvider: context.mediaProvider) { filter in
|
mediaProvider: context.mediaProvider) { filter in
|
||||||
context.send(viewAction: .confirm(filter))
|
context.send(viewAction: .confirm(filter))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.searchable(text: $context.searchQuery, placement: .navigationBarDrawer)
|
||||||
|
.focusSearchIfHardwareKeyboardAvailable()
|
||||||
|
.compoundSearchField()
|
||||||
}
|
}
|
||||||
.toolbar { toolbar }
|
.toolbar { toolbar }
|
||||||
.navigationTitle(L10n.screenRoomlistYourSpaces)
|
.navigationTitle(L10n.screenRoomlistYourSpaces)
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:e28fb24e8a9087f8e951ed8c18ab9048cfacd72fcb2c328ddf3e46169306a1b6
|
oid sha256:fae14c3a25602d5220c0e36439b408999fda970f1e27cbf1b4a6ff57ecac5b6e
|
||||||
size 100972
|
size 100370
|
||||||
|
|||||||
+2
-2
@@ -1,3 +1,3 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:e28fb24e8a9087f8e951ed8c18ab9048cfacd72fcb2c328ddf3e46169306a1b6
|
oid sha256:a250e7aedfcca3264b58fc4227d680d23ba37cbbe4dbfbbbbef09e36bf136f23
|
||||||
size 100972
|
size 101326
|
||||||
|
|||||||
Reference in New Issue
Block a user