RoomMemberListEvents -> RoomMemberListEvent

This commit is contained in:
Benoit Marty 2026-01-27 14:56:58 +01:00
parent 020484f605
commit 1d7f238f11
6 changed files with 12 additions and 14 deletions

View file

@ -10,7 +10,7 @@ package io.element.android.features.roomdetails.impl.members
import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMember
sealed interface RoomMemberListEvents { sealed interface RoomMemberListEvent {
data class ChangeSelectedSection(val section: SelectedSection) : RoomMemberListEvents data class ChangeSelectedSection(val section: SelectedSection) : RoomMemberListEvent
data class RoomMemberSelected(val roomMember: RoomMember) : RoomMemberListEvents data class RoomMemberSelected(val roomMember: RoomMember) : RoomMemberListEvent
} }

View file

@ -125,11 +125,11 @@ class RoomMemberListPresenter(
} }
} }
fun handleEvent(event: RoomMemberListEvents) { fun handleEvent(event: RoomMemberListEvent) {
when (event) { when (event) {
is RoomMemberListEvents.RoomMemberSelected -> is RoomMemberListEvent.RoomMemberSelected ->
roomModerationState.eventSink(ShowActionsForUser(event.roomMember.toMatrixUser())) roomModerationState.eventSink(ShowActionsForUser(event.roomMember.toMatrixUser()))
is RoomMemberListEvents.ChangeSelectedSection -> selectedSection = event.section is RoomMemberListEvent.ChangeSelectedSection -> selectedSection = event.section
} }
} }

View file

@ -25,7 +25,7 @@ data class RoomMemberListState(
val canInvite: Boolean, val canInvite: Boolean,
val selectedSection: SelectedSection, val selectedSection: SelectedSection,
val moderationState: RoomMemberModerationState, val moderationState: RoomMemberModerationState,
val eventSink: (RoomMemberListEvents) -> Unit, val eventSink: (RoomMemberListEvent) -> Unit,
) { ) {
val showBannedSection: Boolean = moderationState.permissions.canBan && roomMembers.dataOrNull()?.banned?.isNotEmpty() == true val showBannedSection: Boolean = moderationState.permissions.canBan && roomMembers.dataOrNull()?.banned?.isNotEmpty() == true
} }

View file

@ -85,7 +85,7 @@ internal fun aRoomMemberListState(
selectedSection: SelectedSection = SelectedSection.MEMBERS, selectedSection: SelectedSection = SelectedSection.MEMBERS,
searchQuery: String = "", searchQuery: String = "",
canInvite: Boolean = false, canInvite: Boolean = false,
eventSink: (RoomMemberListEvents) -> Unit = {}, eventSink: (RoomMemberListEvent) -> Unit = {},
) = RoomMemberListState( ) = RoomMemberListState(
roomMembers = roomMembers, roomMembers = roomMembers,
filteredRoomMembers = roomMembers.map { it.filter(searchQuery) }, filteredRoomMembers = roomMembers.map { it.filter(searchQuery) },

View file

@ -25,8 +25,6 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.SingleChoiceSegmentedButtonRow import androidx.compose.material3.SingleChoiceSegmentedButtonRow
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.pluralStringResource
@ -68,7 +66,7 @@ fun RoomMemberListView(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
fun onSelectUser(roomMember: RoomMember) { fun onSelectUser(roomMember: RoomMember) {
state.eventSink(RoomMemberListEvents.RoomMemberSelected(roomMember)) state.eventSink(RoomMemberListEvent.RoomMemberSelected(roomMember))
} }
Scaffold( Scaffold(
@ -100,7 +98,7 @@ fun RoomMemberListView(
selectedSection = state.selectedSection, selectedSection = state.selectedSection,
showBannedSection = state.showBannedSection, showBannedSection = state.showBannedSection,
searchQuery = state.searchQuery.text.toString(), searchQuery = state.searchQuery.text.toString(),
onSelectedSectionChange = { state.eventSink(RoomMemberListEvents.ChangeSelectedSection(it)) }, onSelectedSectionChange = { state.eventSink(RoomMemberListEvent.ChangeSelectedSection(it)) },
onSelectUser = ::onSelectUser, onSelectUser = ::onSelectUser,
) )
} }

View file

@ -66,7 +66,7 @@ class RoomMemberListPresenterTest {
skipItems(1) skipItems(1)
val loadedState = awaitItem() val loadedState = awaitItem()
assertThat(loadedState.showBannedSection).isTrue() assertThat(loadedState.showBannedSection).isTrue()
loadedState.eventSink(RoomMemberListEvents.ChangeSelectedSection(SelectedSection.BANNED)) loadedState.eventSink(RoomMemberListEvent.ChangeSelectedSection(SelectedSection.BANNED))
val bannedSectionState = awaitItem() val bannedSectionState = awaitItem()
assertThat(bannedSectionState.selectedSection).isEqualTo(SelectedSection.BANNED) assertThat(bannedSectionState.selectedSection).isEqualTo(SelectedSection.BANNED)
// Now update the room members to have no banned users // Now update the room members to have no banned users
@ -188,7 +188,7 @@ class RoomMemberListPresenterTest {
) )
presenter.test { presenter.test {
skipItems(1) skipItems(1)
awaitItem().eventSink(RoomMemberListEvents.RoomMemberSelected(anInvitedVictor())) awaitItem().eventSink(RoomMemberListEvent.RoomMemberSelected(anInvitedVictor()))
} }
} }
} }