Rename isFetchingSearchResults to showSearchLoader
This commit is contained in:
parent
2f49de1fbb
commit
c78ce88c53
14 changed files with 50 additions and 50 deletions
|
|
@ -55,7 +55,7 @@ class RoomInviteMembersPresenter @Inject constructor(
|
|||
val searchResults = remember { mutableStateOf<SearchBarResultState<ImmutableList<InvitableUser>>>(SearchBarResultState.Initial()) }
|
||||
var searchQuery by rememberSaveable { mutableStateOf("") }
|
||||
var searchActive by rememberSaveable { mutableStateOf(false) }
|
||||
var isFetchingSearchResults = rememberSaveable { mutableStateOf(false) }
|
||||
var showSearchLoader = rememberSaveable { mutableStateOf(false) }
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
fetchMembers(roomMembers)
|
||||
|
|
@ -65,7 +65,7 @@ class RoomInviteMembersPresenter @Inject constructor(
|
|||
searchResults = searchResults,
|
||||
roomMembers = roomMembers,
|
||||
selectedUsers = selectedUsers,
|
||||
isFetchingSearchResults = isFetchingSearchResults,
|
||||
showSearchLoader = showSearchLoader,
|
||||
searchQuery = searchQuery
|
||||
)
|
||||
}
|
||||
|
|
@ -76,7 +76,7 @@ class RoomInviteMembersPresenter @Inject constructor(
|
|||
searchQuery = searchQuery,
|
||||
isSearchActive = searchActive,
|
||||
searchResults = searchResults.value,
|
||||
isFetchingSearchResults = isFetchingSearchResults.value,
|
||||
showSearchLoader = showSearchLoader.value,
|
||||
eventSink = {
|
||||
when (it) {
|
||||
is RoomInviteMembersEvents.OnSearchActiveChanged -> {
|
||||
|
|
@ -126,18 +126,18 @@ class RoomInviteMembersPresenter @Inject constructor(
|
|||
searchResults: MutableState<SearchBarResultState<ImmutableList<InvitableUser>>>,
|
||||
roomMembers: MutableState<AsyncData<ImmutableList<RoomMember>>>,
|
||||
selectedUsers: MutableState<ImmutableList<MatrixUser>>,
|
||||
isFetchingSearchResults: MutableState<Boolean>,
|
||||
showSearchLoader: MutableState<Boolean>,
|
||||
searchQuery: String,
|
||||
) = withContext(coroutineDispatchers.io) {
|
||||
searchResults.value = SearchBarResultState.Initial()
|
||||
isFetchingSearchResults.value = false
|
||||
showSearchLoader.value = false
|
||||
val joinedMembers = roomMembers.value.dataOrNull().orEmpty()
|
||||
|
||||
userRepository.search(searchQuery).onEach { state ->
|
||||
isFetchingSearchResults.value = state.isFetchingSearchResults
|
||||
showSearchLoader.value = state.isSearching
|
||||
searchResults.value = when {
|
||||
state.results.isEmpty() && state.isFetchingSearchResults -> SearchBarResultState.Initial()
|
||||
state.results.isEmpty() && !state.isFetchingSearchResults -> SearchBarResultState.NoResultsFound()
|
||||
state.results.isEmpty() && state.isSearching -> SearchBarResultState.Initial()
|
||||
state.results.isEmpty() && !state.isSearching -> SearchBarResultState.NoResultsFound()
|
||||
else -> SearchBarResultState.Results(state.results.map { result ->
|
||||
val existingMembership = joinedMembers.firstOrNull { j -> j.userId == result.matrixUser.userId }?.membership
|
||||
val isJoined = existingMembership == RoomMembershipState.JOIN
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import kotlinx.collections.immutable.ImmutableList
|
|||
data class RoomInviteMembersState(
|
||||
val canInvite: Boolean,
|
||||
val searchQuery: String,
|
||||
val isFetchingSearchResults: Boolean,
|
||||
val showSearchLoader: Boolean,
|
||||
val searchResults: SearchBarResultState<ImmutableList<InvitableUser>>,
|
||||
val selectedUsers: ImmutableList<MatrixUser>,
|
||||
val isSearchActive: Boolean,
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ internal class RoomInviteMembersStateProvider : PreviewParameterProvider<RoomInv
|
|||
InvitableUser(aMatrixUser("@alice:server.org"), isUnresolved = true),
|
||||
)
|
||||
),
|
||||
isFetchingSearchResults = true,
|
||||
showSearchLoader = true,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
|
@ -84,7 +84,7 @@ private fun aRoomInviteMembersState(
|
|||
searchResults: SearchBarResultState<ImmutableList<InvitableUser>> = SearchBarResultState.Initial(),
|
||||
selectedUsers: ImmutableList<MatrixUser> = persistentListOf(),
|
||||
isSearchActive: Boolean = false,
|
||||
isFetchingSearchResults: Boolean = false,
|
||||
showSearchLoader: Boolean = false,
|
||||
): RoomInviteMembersState {
|
||||
return RoomInviteMembersState(
|
||||
canInvite = canInvite,
|
||||
|
|
@ -92,7 +92,7 @@ private fun aRoomInviteMembersState(
|
|||
searchResults = searchResults,
|
||||
selectedUsers = selectedUsers,
|
||||
isSearchActive = isSearchActive,
|
||||
isFetchingSearchResults = isFetchingSearchResults,
|
||||
showSearchLoader = showSearchLoader,
|
||||
eventSink = {},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ fun RoomInviteMembersView(
|
|||
RoomInviteMembersSearchBar(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
query = state.searchQuery,
|
||||
isSearching = state.isFetchingSearchResults,
|
||||
showLoader = state.showSearchLoader,
|
||||
selectedUsers = state.selectedUsers,
|
||||
state = state.searchResults,
|
||||
active = state.isSearchActive,
|
||||
|
|
@ -141,7 +141,7 @@ private fun RoomInviteMembersTopBar(
|
|||
private fun RoomInviteMembersSearchBar(
|
||||
query: String,
|
||||
state: SearchBarResultState<ImmutableList<InvitableUser>>,
|
||||
isSearching: Boolean,
|
||||
showLoader: Boolean,
|
||||
selectedUsers: ImmutableList<MatrixUser>,
|
||||
active: Boolean,
|
||||
onActiveChanged: (Boolean) -> Unit,
|
||||
|
|
@ -171,7 +171,7 @@ private fun RoomInviteMembersSearchBar(
|
|||
showBackButton = false,
|
||||
resultState = state,
|
||||
contentSuffix = {
|
||||
if (isSearching) {
|
||||
if (showLoader) {
|
||||
AsyncLoading()
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -110,15 +110,15 @@ internal class RoomInviteMembersPresenterTest {
|
|||
val initialState = awaitItem()
|
||||
initialState.eventSink(RoomInviteMembersEvents.UpdateSearchQuery("some query"))
|
||||
assertThat(repository.providedQuery).isEqualTo("some query")
|
||||
repository.emitState(UserSearchResultState(results = emptyList(), isFetchingSearchResults = true))
|
||||
consumeItemsUntilPredicate { it.isFetchingSearchResults }.last().also { state ->
|
||||
repository.emitState(UserSearchResultState(results = emptyList(), isSearching = true))
|
||||
consumeItemsUntilPredicate { it.showSearchLoader }.last().also { state ->
|
||||
assertThat(state.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
|
||||
assertThat(state.isFetchingSearchResults).isTrue()
|
||||
assertThat(state.showSearchLoader).isTrue()
|
||||
}
|
||||
repository.emitState(results = emptyList(), isFetchingSearchResults = false)
|
||||
consumeItemsUntilPredicate { !it.isFetchingSearchResults }.last().also { state ->
|
||||
repository.emitState(results = emptyList(), isSearching = false)
|
||||
consumeItemsUntilPredicate { !it.showSearchLoader }.last().also { state ->
|
||||
assertThat(state.searchResults).isInstanceOf(SearchBarResultState.NoResultsFound::class.java)
|
||||
assertThat(state.isFetchingSearchResults).isFalse()
|
||||
assertThat(state.showSearchLoader).isFalse()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -387,21 +387,21 @@ internal class RoomInviteMembersPresenterTest {
|
|||
|
||||
private suspend fun FakeUserRepository.emitStateWithUsers(
|
||||
users: List<MatrixUser>,
|
||||
isFetchingSearchResults: Boolean = false
|
||||
isSearching: Boolean = false
|
||||
) {
|
||||
emitState(
|
||||
results = users.map { UserSearchResult(it) },
|
||||
isFetchingSearchResults = isFetchingSearchResults,
|
||||
isSearching = isSearching,
|
||||
)
|
||||
}
|
||||
|
||||
private suspend fun FakeUserRepository.emitState(
|
||||
results: List<UserSearchResult>,
|
||||
isFetchingSearchResults: Boolean = false
|
||||
isSearching: Boolean = false
|
||||
) {
|
||||
val state = UserSearchResultState(
|
||||
results = results,
|
||||
isFetchingSearchResults = isFetchingSearchResults
|
||||
isSearching = isSearching
|
||||
)
|
||||
emitState(state)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue