Rename SearchBarResultState.Empty to SearchBarResultState.Initial

This commit is contained in:
ganfra
2024-01-05 15:40:02 +01:00
parent dbfa9b0dc6
commit 2f49de1fbb
13 changed files with 24 additions and 24 deletions

View File

@@ -59,17 +59,17 @@ class DefaultUserListPresenter @AssistedInject constructor(
val selectedUsers by userListDataStore.selectedUsers().collectAsState(emptyList())
var searchQuery by rememberSaveable { mutableStateOf("") }
var searchResults: SearchBarResultState<ImmutableList<UserSearchResult>> by remember {
mutableStateOf(SearchBarResultState.Empty())
mutableStateOf(SearchBarResultState.Initial())
}
var isFetchingSearchResults by remember { mutableStateOf(false) }
LaunchedEffect(searchQuery) {
searchResults = SearchBarResultState.Empty()
searchResults = SearchBarResultState.Initial()
isFetchingSearchResults = false
userRepository.search(searchQuery).onEach { state ->
isFetchingSearchResults = state.isFetchingSearchResults
searchResults = when {
state.results.isEmpty() && state.isFetchingSearchResults -> SearchBarResultState.Empty()
state.results.isEmpty() && state.isFetchingSearchResults -> SearchBarResultState.Initial()
state.results.isEmpty() && !state.isFetchingSearchResults -> SearchBarResultState.NoResultsFound()
else -> SearchBarResultState.Results(state.results.toImmutableList())
}

View File

@@ -60,7 +60,7 @@ open class UserListStateProvider : PreviewParameterProvider<UserListState> {
fun aUserListState() = UserListState(
isSearchActive = false,
searchQuery = "",
searchResults = SearchBarResultState.Empty(),
searchResults = SearchBarResultState.Initial(),
selectedUsers = persistentListOf(),
selectionMode = SelectionMode.Single,
isFetchingSearchResults = false,

View File

@@ -56,7 +56,7 @@ class DefaultUserListPresenterTests {
assertThat(initialState.isMultiSelectionEnabled).isFalse()
assertThat(initialState.isSearchActive).isFalse()
assertThat(initialState.selectedUsers).isEmpty()
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
}
}
@@ -77,7 +77,7 @@ class DefaultUserListPresenterTests {
assertThat(initialState.isMultiSelectionEnabled).isTrue()
assertThat(initialState.isSearchActive).isFalse()
assertThat(initialState.selectedUsers).isEmpty()
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
}
}
@@ -132,7 +132,7 @@ class DefaultUserListPresenterTests {
val initialState = awaitItem()
initialState.eventSink(UserListEvents.UpdateSearchQuery("alice"))
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
assertThat(userRepository.providedQuery).isEqualTo("alice")
skipItems(2)
@@ -184,7 +184,7 @@ class DefaultUserListPresenterTests {
val initialState = awaitItem()
initialState.eventSink(UserListEvents.UpdateSearchQuery("alice"))
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
assertThat(userRepository.providedQuery).isEqualTo("alice")
skipItems(2)

View File

@@ -52,7 +52,7 @@ class RoomInviteMembersPresenter @Inject constructor(
override fun present(): RoomInviteMembersState {
val roomMembers = remember { mutableStateOf<AsyncData<ImmutableList<RoomMember>>>(AsyncData.Loading()) }
val selectedUsers = remember { mutableStateOf<ImmutableList<MatrixUser>>(persistentListOf()) }
val searchResults = remember { mutableStateOf<SearchBarResultState<ImmutableList<InvitableUser>>>(SearchBarResultState.Empty()) }
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) }
@@ -129,14 +129,14 @@ class RoomInviteMembersPresenter @Inject constructor(
isFetchingSearchResults: MutableState<Boolean>,
searchQuery: String,
) = withContext(coroutineDispatchers.io) {
searchResults.value = SearchBarResultState.Empty()
searchResults.value = SearchBarResultState.Initial()
isFetchingSearchResults.value = false
val joinedMembers = roomMembers.value.dataOrNull().orEmpty()
userRepository.search(searchQuery).onEach { state ->
isFetchingSearchResults.value = state.isFetchingSearchResults
searchResults.value = when {
state.results.isEmpty() && state.isFetchingSearchResults -> SearchBarResultState.Empty()
state.results.isEmpty() && state.isFetchingSearchResults -> SearchBarResultState.Initial()
state.results.isEmpty() && !state.isFetchingSearchResults -> SearchBarResultState.NoResultsFound()
else -> SearchBarResultState.Results(state.results.map { result ->
val existingMembership = joinedMembers.firstOrNull { j -> j.userId == result.matrixUser.userId }?.membership

View File

@@ -81,7 +81,7 @@ internal class RoomInviteMembersStateProvider : PreviewParameterProvider<RoomInv
private fun aRoomInviteMembersState(
canInvite: Boolean = false,
searchQuery: String = "",
searchResults: SearchBarResultState<ImmutableList<InvitableUser>> = SearchBarResultState.Empty(),
searchResults: SearchBarResultState<ImmutableList<InvitableUser>> = SearchBarResultState.Initial(),
selectedUsers: ImmutableList<MatrixUser> = persistentListOf(),
isSearchActive: Boolean = false,
isFetchingSearchResults: Boolean = false,

View File

@@ -47,7 +47,7 @@ class RoomMemberListPresenter @Inject constructor(
var roomMembers by remember { mutableStateOf<AsyncData<RoomMembers>>(AsyncData.Loading()) }
var searchQuery by rememberSaveable { mutableStateOf("") }
var searchResults by remember {
mutableStateOf<SearchBarResultState<RoomMembers>>(SearchBarResultState.Empty())
mutableStateOf<SearchBarResultState<RoomMembers>>(SearchBarResultState.Initial())
}
var isSearchActive by rememberSaveable { mutableStateOf(false) }
@@ -71,7 +71,7 @@ class RoomMemberListPresenter @Inject constructor(
LaunchedEffect(searchQuery) {
withContext(coroutineDispatchers.io) {
searchResults = if (searchQuery.isEmpty()) {
SearchBarResultState.Empty()
SearchBarResultState.Initial()
} else {
val results = roomMemberListDataSource.search(searchQuery).groupBy { it.membership }
if (results.isEmpty()) SearchBarResultState.NoResultsFound()

View File

@@ -60,7 +60,7 @@ internal class RoomMemberListStateProvider : PreviewParameterProvider<RoomMember
internal fun aRoomMemberListState(
roomMembers: AsyncData<RoomMembers> = AsyncData.Uninitialized,
searchResults: SearchBarResultState<RoomMembers> = SearchBarResultState.Empty(),
searchResults: SearchBarResultState<RoomMembers> = SearchBarResultState.Initial(),
) = RoomMemberListState(
roomMembers = roomMembers,
searchQuery = "",

View File

@@ -66,7 +66,7 @@ internal class RoomInviteMembersPresenterTest {
}.test {
val initialState = awaitItem()
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
assertThat(initialState.isSearchActive).isFalse()
assertThat(initialState.canInvite).isFalse()
assertThat(initialState.searchQuery).isEmpty()
@@ -112,7 +112,7 @@ internal class RoomInviteMembersPresenterTest {
assertThat(repository.providedQuery).isEqualTo("some query")
repository.emitState(UserSearchResultState(results = emptyList(), isFetchingSearchResults = true))
consumeItemsUntilPredicate { it.isFetchingSearchResults }.last().also { state ->
assertThat(state.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(state.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
assertThat(state.isFetchingSearchResults).isTrue()
}
repository.emitState(results = emptyList(), isFetchingSearchResults = false)

View File

@@ -55,7 +55,7 @@ class RoomMemberListPresenterTests {
val initialState = awaitItem()
assertThat(initialState.roomMembers).isInstanceOf(AsyncData.Loading::class.java)
assertThat(initialState.searchQuery).isEmpty()
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(initialState.searchResults).isInstanceOf(SearchBarResultState.Initial::class.java)
assertThat(initialState.isSearchActive).isFalse()
val loadedState = awaitItem()
assertThat(loadedState.roomMembers).isInstanceOf(AsyncData.Success::class.java)

View File

@@ -59,7 +59,7 @@ fun <T> SearchBar(
modifier: Modifier = Modifier,
enabled: Boolean = true,
showBackButton: Boolean = true,
resultState: SearchBarResultState<T> = SearchBarResultState.Empty(),
resultState: SearchBarResultState<T> = SearchBarResultState.Initial(),
shape: Shape = SearchBarDefaults.inputFieldShape,
tonalElevation: Dp = SearchBarDefaults.TonalElevation,
windowInsets: WindowInsets = SearchBarDefaults.windowInsets,
@@ -184,7 +184,7 @@ object ElementSearchBarDefaults {
@Immutable
sealed interface SearchBarResultState<in T> {
/** No search results are available yet (e.g. because the user hasn't entered a search term). */
class Empty<T> : SearchBarResultState<T>
class Initial<T> : SearchBarResultState<T>
/** The search has completed, but no results were found. */
class NoResultsFound<T> : SearchBarResultState<T>
@@ -274,7 +274,7 @@ private fun ContentToPreview(
query: String = "",
active: Boolean = false,
showBackButton: Boolean = true,
resultState: SearchBarResultState<String> = SearchBarResultState.Empty(),
resultState: SearchBarResultState<String> = SearchBarResultState.Initial(),
contentPrefix: @Composable ColumnScope.() -> Unit = {},
contentSuffix: @Composable ColumnScope.() -> Unit = {},
resultHandler: @Composable ColumnScope.(String) -> Unit = {},

View File

@@ -51,7 +51,7 @@ class RoomSelectPresenter @AssistedInject constructor(
var selectedRooms by remember { mutableStateOf(persistentListOf<RoomSummaryDetails>()) }
var query by remember { mutableStateOf("") }
var isSearchActive by remember { mutableStateOf(false) }
var results: SearchBarResultState<ImmutableList<RoomSummaryDetails>> by remember { mutableStateOf(SearchBarResultState.Empty()) }
var results: SearchBarResultState<ImmutableList<RoomSummaryDetails>> by remember { mutableStateOf(SearchBarResultState.Initial()) }
val summaries by client.roomListService.allRooms.summaries.collectAsState()

View File

@@ -48,7 +48,7 @@ open class RoomSelectStateProvider : PreviewParameterProvider<RoomSelectState> {
}
private fun aRoomSelectState(
resultState: SearchBarResultState<ImmutableList<RoomSummaryDetails>> = SearchBarResultState.Empty(),
resultState: SearchBarResultState<ImmutableList<RoomSummaryDetails>> = SearchBarResultState.Initial(),
query: String = "",
isSearchActive: Boolean = false,
selectedRooms: ImmutableList<RoomSummaryDetails> = persistentListOf(),

View File

@@ -45,7 +45,7 @@ class RoomSelectPresenterTests {
}.test {
val initialState = awaitItem()
assertThat(initialState.selectedRooms).isEmpty()
assertThat(initialState.resultState).isInstanceOf(SearchBarResultState.Empty::class.java)
assertThat(initialState.resultState).isInstanceOf(SearchBarResultState.Initial::class.java)
assertThat(initialState.isSearchActive).isFalse()
// Search is run automatically
val searchState = awaitItem()