Browse Source

Present the last added user first

test/jme/compound-poc
Maxime NATUREL 2 years ago committed by Florian Renaud
parent
commit
ddcde735fe
  1. 2
      features/selectusers/impl/src/main/kotlin/io/element/android/features/selectusers/impl/DefaultSelectUsersPresenter.kt
  2. 30
      features/selectusers/impl/src/test/kotlin/io/element/android/features/selectusers/impl/DefaultSelectUsersPresenterTests.kt
  3. 6
      libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt

2
features/selectusers/impl/src/main/kotlin/io/element/android/features/selectusers/impl/DefaultSelectUsersPresenter.kt

@ -75,7 +75,7 @@ class DefaultSelectUsersPresenter(private val isMultiSelectionEnabled: Boolean) @@ -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,

30
features/selectusers/impl/src/test/kotlin/io/element/android/features/selectusers/impl/DefaultSelectUsersPresenterTests.kt

@ -95,15 +95,29 @@ class DefaultSelectSingleUserPresenterTests { @@ -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()
}
}
}

6
libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/components/MatrixUserProvider.kt

@ -32,9 +32,9 @@ open class MatrixUserProvider : PreviewParameterProvider<MatrixUser> { @@ -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()
)

Loading…
Cancel
Save