RoomMemberListEvents -> RoomMemberListEvent
This commit is contained in:
parent
020484f605
commit
1d7f238f11
6 changed files with 12 additions and 14 deletions
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) },
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue