UserListEvents -> UserListEvent

This commit is contained in:
Benoit Marty
2026-08-25 10:28:07 +02:00
parent cf7d5ab4b4
commit 51a4704854
6 changed files with 26 additions and 26 deletions
@@ -24,7 +24,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import io.element.android.features.startchat.impl.userlist.UserListEvents
import io.element.android.features.startchat.impl.userlist.UserListEvent
import io.element.android.features.startchat.impl.userlist.UserListState
import io.element.android.features.startchat.impl.userlist.UserListStatePreviewParam
import io.element.android.libraries.designsystem.components.avatar.AvatarSize
@@ -63,13 +63,13 @@ fun UserListView(
showLoader = state.showSearchLoader,
isMultiSelectionEnable = state.isMultiSelectionEnabled,
showBackButton = showBackButton,
onActiveChange = { state.eventSink(UserListEvents.OnSearchActiveChanged(it)) },
onActiveChange = { state.eventSink(UserListEvent.OnSearchActiveChanged(it)) },
onUserSelect = {
state.eventSink(UserListEvents.AddToSelection(it))
state.eventSink(UserListEvent.AddToSelection(it))
onSelectUser(it)
},
onUserDeselect = {
state.eventSink(UserListEvents.RemoveFromSelection(it))
state.eventSink(UserListEvent.RemoveFromSelection(it))
onDeselectUser(it)
},
)
@@ -80,7 +80,7 @@ fun UserListView(
selectedUsers = state.selectedUsers,
autoScroll = true,
onUserRemove = {
state.eventSink(UserListEvents.RemoveFromSelection(it))
state.eventSink(UserListEvent.RemoveFromSelection(it))
onDeselectUser(it)
},
)
@@ -104,10 +104,10 @@ fun UserListView(
checked = isSelected,
onCheckedChange = {
if (isSelected) {
state.eventSink(UserListEvents.RemoveFromSelection(recentDirectRoom.matrixUser))
state.eventSink(UserListEvent.RemoveFromSelection(recentDirectRoom.matrixUser))
onDeselectUser(recentDirectRoom.matrixUser)
} else {
state.eventSink(UserListEvents.AddToSelection(recentDirectRoom.matrixUser))
state.eventSink(UserListEvent.AddToSelection(recentDirectRoom.matrixUser))
onSelectUser(recentDirectRoom.matrixUser)
}
},
@@ -85,11 +85,11 @@ class DefaultUserListPresenter(
}.launchIn(this)
}
fun handleEvent(event: UserListEvents) {
fun handleEvent(event: UserListEvent) {
when (event) {
is UserListEvents.OnSearchActiveChanged -> isSearchActive = event.active
is UserListEvents.AddToSelection -> userListDataStore.selectUser(event.matrixUser)
is UserListEvents.RemoveFromSelection -> userListDataStore.removeUserFromSelection(event.matrixUser)
is UserListEvent.OnSearchActiveChanged -> isSearchActive = event.active
is UserListEvent.AddToSelection -> userListDataStore.selectUser(event.matrixUser)
is UserListEvent.RemoveFromSelection -> userListDataStore.removeUserFromSelection(event.matrixUser)
}
}
@@ -10,8 +10,8 @@ package io.element.android.features.startchat.impl.userlist
import io.element.android.libraries.matrix.api.user.MatrixUser
sealed interface UserListEvents {
data class AddToSelection(val matrixUser: MatrixUser) : UserListEvents
data class RemoveFromSelection(val matrixUser: MatrixUser) : UserListEvents
data class OnSearchActiveChanged(val active: Boolean) : UserListEvents
sealed interface UserListEvent {
data class AddToSelection(val matrixUser: MatrixUser) : UserListEvent
data class RemoveFromSelection(val matrixUser: MatrixUser) : UserListEvent
data class OnSearchActiveChanged(val active: Boolean) : UserListEvent
}
@@ -23,7 +23,7 @@ data class UserListState(
val isSearchActive: Boolean,
val selectionMode: SelectionMode,
val recentDirectRooms: ImmutableList<RecentDirectRoom>,
val eventSink: (UserListEvents) -> Unit,
val eventSink: (UserListEvent) -> Unit,
) {
val isMultiSelectionEnabled = selectionMode == SelectionMode.Multiple
}
@@ -68,7 +68,7 @@ fun aUserListState(
showSearchLoader: Boolean = false,
selectionMode: SelectionMode = SelectionMode.Single,
recentDirectRooms: List<RecentDirectRoom> = emptyList(),
eventSink: (UserListEvents) -> Unit = {},
eventSink: (UserListEvent) -> Unit = {},
) = UserListState(
searchQuery = TextFieldState(initialText = searchQuery),
isSearchActive = isSearchActive,
@@ -80,7 +80,7 @@ class DefaultUserListPresenterTest {
presenter.test {
val initialState = awaitItem()
initialState.eventSink(UserListEvents.OnSearchActiveChanged(true))
initialState.eventSink(UserListEvent.OnSearchActiveChanged(true))
assertThat(awaitItem().isSearchActive).isTrue()
val matrixIdQuery = "@name:matrix.org"
@@ -93,7 +93,7 @@ class DefaultUserListPresenterTest {
assertThat(awaitItem().searchQuery.text.toString()).isEqualTo(notMatrixIdQuery)
assertThat(userRepository.providedQuery).isEqualTo(notMatrixIdQuery)
initialState.eventSink(UserListEvents.OnSearchActiveChanged(false))
initialState.eventSink(UserListEvent.OnSearchActiveChanged(false))
assertThat(awaitItem().isSearchActive).isFalse()
}
}
@@ -190,22 +190,22 @@ class DefaultUserListPresenterTest {
val userABis = aMatrixUser("@userA:domain", "A")
val userC = aMatrixUser("@userC:domain", "C")
initialState.eventSink(UserListEvents.AddToSelection(userA))
initialState.eventSink(UserListEvent.AddToSelection(userA))
assertThat(awaitItem().selectedUsers).containsExactly(userA)
initialState.eventSink(UserListEvents.AddToSelection(userB))
initialState.eventSink(UserListEvent.AddToSelection(userB))
assertThat(awaitItem().selectedUsers).containsExactly(userA, userB)
initialState.eventSink(UserListEvents.AddToSelection(userABis))
initialState.eventSink(UserListEvents.AddToSelection(userC))
initialState.eventSink(UserListEvent.AddToSelection(userABis))
initialState.eventSink(UserListEvent.AddToSelection(userC))
// duplicated users should be ignored
assertThat(awaitItem().selectedUsers).containsExactly(userA, userB, userC)
initialState.eventSink(UserListEvents.RemoveFromSelection(userB))
initialState.eventSink(UserListEvent.RemoveFromSelection(userB))
assertThat(awaitItem().selectedUsers).containsExactly(userA, userC)
initialState.eventSink(UserListEvents.RemoveFromSelection(userA))
initialState.eventSink(UserListEvent.RemoveFromSelection(userA))
assertThat(awaitItem().selectedUsers).containsExactly(userC)
initialState.eventSink(UserListEvents.RemoveFromSelection(userC))
initialState.eventSink(UserListEvent.RemoveFromSelection(userC))
assertThat(awaitItem().selectedUsers).isEmpty()
}
}