Make global search use a Joined filter for room results (#7695)

Before this, global search returned also invites, which wasn't planned.
This commit is contained in:
Jorge Martin Espinosa
2026-09-11 17:36:38 +02:00
committed by GitHub
parent d2c49bf4af
commit 8cd3750cde
6 changed files with 29 additions and 4 deletions
@@ -31,6 +31,7 @@ import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.permalink.PermalinkParser
import io.element.android.libraries.matrix.api.room.RoomInfo
import io.element.android.libraries.matrix.api.roomlist.LatestEventValue
import io.element.android.libraries.matrix.api.roomlist.RoomListFilter
import io.element.android.libraries.matrix.api.search.MessageSearch
import io.element.android.libraries.matrix.api.search.MessageSearchPaginationState
import io.element.android.libraries.matrix.api.search.MessageSearchResult
@@ -94,7 +95,14 @@ class GlobalSearchPresenter(
AsyncData.Uninitialized
}
launch { roomListSearchDataSource.setSearchQuery(queryState.text.toString()) }
// Apply the query to the room list search, looking only for joined rooms matching the query
launch {
roomListSearchDataSource.setSearchQuery(
searchQuery = queryState.text.toString(),
additionalFilters = RoomListFilter.Joined,
)
}
// Apply the query to the message search too
launch {
currentMessageSearch.setQuery(queryState.text.toString())
.onFailure { Timber.e(it, "Could not set query for message search") }
@@ -60,11 +60,15 @@ class RoomListSearchDataSource(
roomList.updateVisibleRange(visibleRange)
}
suspend fun setSearchQuery(searchQuery: String) = coroutineScope {
suspend fun setSearchQuery(searchQuery: String, additionalFilters: RoomListFilter?) = coroutineScope {
val filter = if (searchQuery.isBlank()) {
RoomListFilter.None
} else {
RoomListFilter.NormalizedMatchRoomName(searchQuery)
if (additionalFilters != null) {
RoomListFilter.all(additionalFilters, RoomListFilter.NormalizedMatchRoomName(searchQuery))
} else {
RoomListFilter.NormalizedMatchRoomName(searchQuery)
}
}
roomList.updateFilter(filter)
}
@@ -39,7 +39,7 @@ class RoomListSearchPresenter(
val dataSource = remember { dataSourceFactory.create(coroutineScope) }
LaunchedEffect(searchQuery.text) {
dataSource.setSearchQuery(searchQuery.text.toString())
dataSource.setSearchQuery(searchQuery = searchQuery.text.toString(), additionalFilters = null)
}
fun handleEvent(event: RoomListSearchEvent) {