Present the last added user first

This commit is contained in:
Maxime NATUREL 2023-03-16 15:22:04 +01:00 committed by Florian Renaud
parent 790c2137c7
commit ddcde735fe
3 changed files with 26 additions and 12 deletions

View file

@ -75,7 +75,7 @@ class DefaultSelectUsersPresenter(private val isMultiSelectionEnabled: Boolean)
return SelectUsersState(
searchQuery = searchQuery,
searchResults = searchResults.value,
selectedUsers = selectedUsers.value,
selectedUsers = selectedUsers.value.reversed().toImmutableSet(),
isSearchActive = isSearchActive,
isMultiSelectionEnabled = isMultiSelectionEnabled,
eventSink = ::handleEvents,

View file

@ -95,15 +95,29 @@ class DefaultSelectSingleUserPresenterTests {
}.test {
val initialState = awaitItem()
val matrixUser = aMatrixUser()
initialState.eventSink(SelectUsersEvents.AddToSelection(matrixUser))
val selectionAfterAdd = awaitItem().selectedUsers
assertThat(selectionAfterAdd).hasSize(1)
assertThat(selectionAfterAdd).contains(matrixUser)
val userA = aMatrixUser("userA", "A")
val userB = aMatrixUser("userB", "B")
initialState.eventSink(SelectUsersEvents.AddToSelection(userA))
val selectionAfterAddingA = awaitItem().selectedUsers
assertThat(selectionAfterAddingA).hasSize(1)
assertThat(selectionAfterAddingA).contains(userA)
initialState.eventSink(SelectUsersEvents.RemoveFromSelection(matrixUser))
val selectionAfterRemove = awaitItem().selectedUsers
assertThat(selectionAfterRemove).isEmpty()
initialState.eventSink(SelectUsersEvents.AddToSelection(userB))
val selectionAfterAddingB = awaitItem().selectedUsers
assertThat(selectionAfterAddingB).hasSize(2)
assertThat(selectionAfterAddingB).contains(userA)
assertThat(selectionAfterAddingB).contains(userB)
// the last added user should be presented first
assertThat(selectionAfterAddingB.first()).isEqualTo(userB)
initialState.eventSink(SelectUsersEvents.RemoveFromSelection(userB))
val selectionAfterRemovingB = awaitItem().selectedUsers
assertThat(selectionAfterRemovingB).hasSize(1)
assertThat(selectionAfterRemovingB).contains(userA)
initialState.eventSink(SelectUsersEvents.RemoveFromSelection(userA))
val selectionAfterRemovingA = awaitItem().selectedUsers
assertThat(selectionAfterRemovingA).isEmpty()
}
}
}

View file

@ -32,9 +32,9 @@ open class MatrixUserProvider : PreviewParameterProvider<MatrixUser> {
)
}
fun aMatrixUser() = MatrixUser(
id = UserId("@id_of_alice:server.org"),
username = "Alice",
fun aMatrixUser(id: String = "@id_of_alice:server.org", userName: String = "Alice") = MatrixUser(
id = UserId(id),
username = userName,
avatarData = anAvatarData()
)