mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-10-31 16:22:49 +00:00
UserListEvents -> UserListEvent
This commit is contained in:
+7
-7
@@ -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)
|
||||
}
|
||||
},
|
||||
|
||||
+4
-4
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -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
|
||||
}
|
||||
+1
-1
@@ -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
|
||||
}
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
+9
-9
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user