mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 21:32:34 +00:00
Try fixing the empty state for the room list search in global search
This commit is contained in:
+18
-5
@@ -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.permalink.PermalinkParser
|
||||||
import io.element.android.libraries.matrix.api.room.RoomInfo
|
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.LatestEventValue
|
||||||
|
import io.element.android.libraries.matrix.api.roomlist.RoomList
|
||||||
import io.element.android.libraries.matrix.api.search.MessageSearch
|
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.MessageSearchPaginationState
|
||||||
import io.element.android.libraries.matrix.api.search.MessageSearchResult
|
import io.element.android.libraries.matrix.api.search.MessageSearchResult
|
||||||
@@ -108,13 +109,25 @@ class GlobalSearchPresenter(
|
|||||||
|
|
||||||
when (currentTarget) {
|
when (currentTarget) {
|
||||||
GlobalSearchTarget.ROOMS -> {
|
GlobalSearchTarget.ROOMS -> {
|
||||||
roomListSearchDataSource.roomSummaries.collectLatest { results ->
|
combine(
|
||||||
|
roomListSearchDataSource.roomSummaries,
|
||||||
|
roomListSearchDataSource.loadingState,
|
||||||
|
) { summaries, loadingState ->
|
||||||
|
Pair(summaries, loadingState)
|
||||||
|
}.collectLatest { (results, loadingState) ->
|
||||||
|
Timber.d("Room list search found ${results.size} items, loading state: $loadingState")
|
||||||
// The room list data source always returns some values, even if the query is empty,
|
// The room list data source always returns some values, even if the query is empty,
|
||||||
// so we only want to update the search results if the query is not empty
|
// so we only want to update the search results if the query is not empty
|
||||||
searchResults = if (queryState.text.isNotEmpty() && results.isNotEmpty()) {
|
searchResults = when {
|
||||||
AsyncData.Success(GlobalSearchResults.RoomListResults(results = results))
|
queryState.text.isNotEmpty() && results.isNotEmpty() -> {
|
||||||
} else {
|
AsyncData.Success(GlobalSearchResults.RoomListResults(results = results))
|
||||||
AsyncData.Uninitialized
|
}
|
||||||
|
loadingState is RoomList.LoadingState.Loaded && results.isEmpty() -> {
|
||||||
|
AsyncData.Success(GlobalSearchResults.RoomListResults(results = persistentListOf()))
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
AsyncData.Uninitialized
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user