mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
RoomMemberModerationEvents -> RoomMemberModerationEvent
This commit is contained in:
+2
-2
@@ -43,7 +43,7 @@ import io.element.android.features.messages.impl.timeline.di.LocalTimelineItemPr
|
|||||||
import io.element.android.features.messages.impl.timeline.di.TimelineItemPresenterFactories
|
import io.element.android.features.messages.impl.timeline.di.TimelineItemPresenterFactories
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationAction
|
import io.element.android.features.roommembermoderation.api.ModerationAction
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer
|
||||||
import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab
|
import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab
|
||||||
import io.element.android.libraries.androidutils.system.openUrlInExternalApp
|
import io.element.android.libraries.androidutils.system.openUrlInExternalApp
|
||||||
@@ -348,7 +348,7 @@ class MessagesNode(
|
|||||||
onSelectAction = { action, target ->
|
onSelectAction = { action, target ->
|
||||||
when (action) {
|
when (action) {
|
||||||
is ModerationAction.DisplayProfile -> callback.navigateToRoomMemberDetails(target.userId)
|
is ModerationAction.DisplayProfile -> callback.navigateToRoomMemberDetails(target.userId)
|
||||||
else -> state.roomMemberModerationState.eventSink(RoomMemberModerationEvents.ProcessAction(action, target))
|
else -> state.roomMemberModerationState.eventSink(RoomMemberModerationEvent.ProcessAction(action, target))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onAvatarClick = { user ->
|
onAvatarClick = { user ->
|
||||||
|
|||||||
+2
-2
@@ -54,7 +54,7 @@ import io.element.android.features.messages.impl.timeline.model.event.captionOrN
|
|||||||
import io.element.android.features.messages.impl.timeline.protection.TimelineProtectionState
|
import io.element.android.features.messages.impl.timeline.protection.TimelineProtectionState
|
||||||
import io.element.android.features.messages.impl.voicemessages.composer.DefaultVoiceMessageComposerPresenter
|
import io.element.android.features.messages.impl.voicemessages.composer.DefaultVoiceMessageComposerPresenter
|
||||||
import io.element.android.features.roomcall.api.RoomCallState
|
import io.element.android.features.roomcall.api.RoomCallState
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||||
import io.element.android.libraries.androidutils.clipboard.ClipboardHelper
|
import io.element.android.libraries.androidutils.clipboard.ClipboardHelper
|
||||||
import io.element.android.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
@@ -263,7 +263,7 @@ class MessagesPresenter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
is MessagesEvent.OnUserClicked -> {
|
is MessagesEvent.OnUserClicked -> {
|
||||||
roomMemberModerationState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(event.user))
|
roomMemberModerationState.eventSink(RoomMemberModerationEvent.ShowActionsForUser(event.user))
|
||||||
}
|
}
|
||||||
MessagesEvent.StopLiveLocationShare -> {
|
MessagesEvent.StopLiveLocationShare -> {
|
||||||
localCoroutineScope.launch {
|
localCoroutineScope.launch {
|
||||||
|
|||||||
+2
-2
@@ -38,7 +38,7 @@ import io.element.android.features.messages.impl.timeline.protection.TimelinePro
|
|||||||
import io.element.android.features.messages.impl.timeline.protection.aTimelineProtectionState
|
import io.element.android.features.messages.impl.timeline.protection.aTimelineProtectionState
|
||||||
import io.element.android.features.roomcall.api.RoomCallState
|
import io.element.android.features.roomcall.api.RoomCallState
|
||||||
import io.element.android.features.roomcall.api.aStandByCallState
|
import io.element.android.features.roomcall.api.aStandByCallState
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||||
import io.element.android.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
@@ -168,7 +168,7 @@ fun aRoomMemberModerationState(
|
|||||||
permissions: RoomMemberModerationPermissions = RoomMemberModerationPermissions.DEFAULT,
|
permissions: RoomMemberModerationPermissions = RoomMemberModerationPermissions.DEFAULT,
|
||||||
) = object : RoomMemberModerationState {
|
) = object : RoomMemberModerationState {
|
||||||
override val permissions: RoomMemberModerationPermissions = permissions
|
override val permissions: RoomMemberModerationPermissions = permissions
|
||||||
override val eventSink: (RoomMemberModerationEvents) -> Unit = {}
|
override val eventSink: (RoomMemberModerationEvent) -> Unit = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun aUserEventPermissions(
|
fun aUserEventPermissions(
|
||||||
|
|||||||
+2
-2
@@ -46,7 +46,7 @@ import io.element.android.features.messages.impl.timeline.di.LocalTimelineItemPr
|
|||||||
import io.element.android.features.messages.impl.timeline.di.TimelineItemPresenterFactories
|
import io.element.android.features.messages.impl.timeline.di.TimelineItemPresenterFactories
|
||||||
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
import io.element.android.features.messages.impl.timeline.model.TimelineItem
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationAction
|
import io.element.android.features.roommembermoderation.api.ModerationAction
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer
|
||||||
import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab
|
import io.element.android.libraries.androidutils.browser.openUrlInChromeCustomTab
|
||||||
import io.element.android.libraries.androidutils.system.openUrlInExternalApp
|
import io.element.android.libraries.androidutils.system.openUrlInExternalApp
|
||||||
@@ -343,7 +343,7 @@ class ThreadedMessagesNode(
|
|||||||
onSelectAction = { action, target ->
|
onSelectAction = { action, target ->
|
||||||
when (action) {
|
when (action) {
|
||||||
is ModerationAction.DisplayProfile -> callback.navigateToRoomMemberDetails(target.userId)
|
is ModerationAction.DisplayProfile -> callback.navigateToRoomMemberDetails(target.userId)
|
||||||
else -> state.roomMemberModerationState.eventSink(RoomMemberModerationEvents.ProcessAction(action, target))
|
else -> state.roomMemberModerationState.eventSink(RoomMemberModerationEvent.ProcessAction(action, target))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onAvatarClick = { user ->
|
onAvatarClick = { user ->
|
||||||
|
|||||||
+2
-2
@@ -21,7 +21,7 @@ import dev.zacsweers.metro.AssistedInject
|
|||||||
import im.vector.app.features.analytics.plan.MobileScreen
|
import im.vector.app.features.analytics.plan.MobileScreen
|
||||||
import io.element.android.annotations.ContributesNode
|
import io.element.android.annotations.ContributesNode
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationAction
|
import io.element.android.features.roommembermoderation.api.ModerationAction
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationRenderer
|
||||||
import io.element.android.libraries.architecture.appyx.launchMolecule
|
import io.element.android.libraries.architecture.appyx.launchMolecule
|
||||||
import io.element.android.libraries.architecture.callback
|
import io.element.android.libraries.architecture.callback
|
||||||
@@ -81,7 +81,7 @@ class RoomMemberListNode(
|
|||||||
onSelectAction = { action, target ->
|
onSelectAction = { action, target ->
|
||||||
when (action) {
|
when (action) {
|
||||||
is ModerationAction.DisplayProfile -> openRoomMemberDetails(target.userId)
|
is ModerationAction.DisplayProfile -> openRoomMemberDetails(target.userId)
|
||||||
else -> state.moderationState.eventSink(RoomMemberModerationEvents.ProcessAction(action, target))
|
else -> state.moderationState.eventSink(RoomMemberModerationEvent.ProcessAction(action, target))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onAvatarClick = { user ->
|
onAvatarClick = { user ->
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ import androidx.compose.runtime.produceState
|
|||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import dev.zacsweers.metro.Inject
|
import dev.zacsweers.metro.Inject
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents.ShowActionsForUser
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent.ShowActionsForUser
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||||
import io.element.android.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
import io.element.android.libraries.architecture.Presenter
|
import io.element.android.libraries.architecture.Presenter
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ package io.element.android.features.roomdetails.impl.members
|
|||||||
|
|
||||||
import androidx.compose.foundation.text.input.TextFieldState
|
import androidx.compose.foundation.text.input.TextFieldState
|
||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||||
import io.element.android.libraries.architecture.AsyncData
|
import io.element.android.libraries.architecture.AsyncData
|
||||||
@@ -115,7 +115,7 @@ fun aRoomMemberModerationState(
|
|||||||
canBan = canBan,
|
canBan = canBan,
|
||||||
canKick = canKick,
|
canKick = canKick,
|
||||||
)
|
)
|
||||||
override val eventSink: (RoomMemberModerationEvents) -> Unit = {}
|
override val eventSink: (RoomMemberModerationEvent) -> Unit = {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ import io.element.android.libraries.matrix.api.user.MatrixUser
|
|||||||
/**
|
/**
|
||||||
* Events sent to the moderation presenter through [RoomMemberModerationState.eventSink].
|
* Events sent to the moderation presenter through [RoomMemberModerationState.eventSink].
|
||||||
*/
|
*/
|
||||||
interface RoomMemberModerationEvents {
|
interface RoomMemberModerationEvent {
|
||||||
data class ShowActionsForUser(val user: MatrixUser) : RoomMemberModerationEvents
|
data class ShowActionsForUser(val user: MatrixUser) : RoomMemberModerationEvent
|
||||||
data class ProcessAction(val action: ModerationAction, val targetUser: MatrixUser) : RoomMemberModerationEvents
|
data class ProcessAction(val action: ModerationAction, val targetUser: MatrixUser) : RoomMemberModerationEvent
|
||||||
}
|
}
|
||||||
+1
-1
@@ -19,7 +19,7 @@ interface RoomMemberModerationState {
|
|||||||
val permissions: RoomMemberModerationPermissions
|
val permissions: RoomMemberModerationPermissions
|
||||||
|
|
||||||
/** Where the host screen sends its events to open the actions of a member or run one of them. */
|
/** Where the host screen sends its events to open the actions of a member or run one of them. */
|
||||||
val eventSink: (RoomMemberModerationEvents) -> Unit
|
val eventSink: (RoomMemberModerationEvent) -> Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ModerationActionState(
|
data class ModerationActionState(
|
||||||
|
|||||||
+2
-2
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
package io.element.android.features.roommembermoderation.impl
|
package io.element.android.features.roommembermoderation.impl
|
||||||
|
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
|
|
||||||
sealed interface InternalRoomMemberModerationEvents : RoomMemberModerationEvents {
|
sealed interface InternalRoomMemberModerationEvents : RoomMemberModerationEvent {
|
||||||
data class DoKickUser(val reason: String) : InternalRoomMemberModerationEvents
|
data class DoKickUser(val reason: String) : InternalRoomMemberModerationEvents
|
||||||
data class DoBanUser(val reason: String) : InternalRoomMemberModerationEvents
|
data class DoBanUser(val reason: String) : InternalRoomMemberModerationEvents
|
||||||
data class DoUnbanUser(val reason: String) : InternalRoomMemberModerationEvents
|
data class DoUnbanUser(val reason: String) : InternalRoomMemberModerationEvents
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@
|
|||||||
package io.element.android.features.roommembermoderation.impl
|
package io.element.android.features.roommembermoderation.impl
|
||||||
|
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
@@ -23,7 +23,7 @@ data class InternalRoomMemberModerationState(
|
|||||||
val kickUserAsyncAction: AsyncAction<Unit>,
|
val kickUserAsyncAction: AsyncAction<Unit>,
|
||||||
val banUserAsyncAction: AsyncAction<Unit>,
|
val banUserAsyncAction: AsyncAction<Unit>,
|
||||||
val unbanUserAsyncAction: AsyncAction<Unit>,
|
val unbanUserAsyncAction: AsyncAction<Unit>,
|
||||||
override val eventSink: (RoomMemberModerationEvents) -> Unit,
|
override val eventSink: (RoomMemberModerationEvent) -> Unit,
|
||||||
) : RoomMemberModerationState {
|
) : RoomMemberModerationState {
|
||||||
val canDisplayActions = actions.isNotEmpty()
|
val canDisplayActions = actions.isNotEmpty()
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ package io.element.android.features.roommembermoderation.impl
|
|||||||
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationAction
|
import io.element.android.features.roommembermoderation.api.ModerationAction
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.designsystem.preview.USER_NAME_ALICE
|
import io.element.android.libraries.designsystem.preview.USER_NAME_ALICE
|
||||||
@@ -93,7 +93,7 @@ fun aRoomMembersModerationState(
|
|||||||
kickUserAsyncAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
kickUserAsyncAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
||||||
banUserAsyncAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
banUserAsyncAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
||||||
unbanUserAsyncAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
unbanUserAsyncAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
||||||
eventSink: (RoomMemberModerationEvents) -> Unit = {},
|
eventSink: (RoomMemberModerationEvent) -> Unit = {},
|
||||||
) = InternalRoomMemberModerationState(
|
) = InternalRoomMemberModerationState(
|
||||||
permissions = permissions,
|
permissions = permissions,
|
||||||
selectedUser = selectedUser,
|
selectedUser = selectedUser,
|
||||||
|
|||||||
+4
-4
@@ -20,7 +20,7 @@ import dev.zacsweers.metro.Inject
|
|||||||
import im.vector.app.features.analytics.plan.RoomModeration
|
import im.vector.app.features.analytics.plan.RoomModeration
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationAction
|
import io.element.android.features.roommembermoderation.api.ModerationAction
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||||
import io.element.android.features.roommembermoderation.api.roomMemberModerationPermissions
|
import io.element.android.features.roommembermoderation.api.roomMemberModerationPermissions
|
||||||
@@ -77,9 +77,9 @@ class RoomMemberModerationPresenter(
|
|||||||
}
|
}
|
||||||
val moderationActions = remember { mutableStateOf<ImmutableList<ModerationActionState>>(persistentListOf()) }
|
val moderationActions = remember { mutableStateOf<ImmutableList<ModerationActionState>>(persistentListOf()) }
|
||||||
|
|
||||||
fun handleEvent(event: RoomMemberModerationEvents) {
|
fun handleEvent(event: RoomMemberModerationEvent) {
|
||||||
when (event) {
|
when (event) {
|
||||||
is RoomMemberModerationEvents.ShowActionsForUser -> {
|
is RoomMemberModerationEvent.ShowActionsForUser -> {
|
||||||
selectedUser = event.user
|
selectedUser = event.user
|
||||||
val member = room.membersStateFlow.value.roomMembers()?.firstOrNull {
|
val member = room.membersStateFlow.value.roomMembers()?.firstOrNull {
|
||||||
it.userId == event.user.userId
|
it.userId == event.user.userId
|
||||||
@@ -90,7 +90,7 @@ class RoomMemberModerationPresenter(
|
|||||||
currentUserPowerLevel = currentUserPowerLevel,
|
currentUserPowerLevel = currentUserPowerLevel,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
is RoomMemberModerationEvents.ProcessAction -> {
|
is RoomMemberModerationEvent.ProcessAction -> {
|
||||||
// First, hide any list of existing actions that could be displayed
|
// First, hide any list of existing actions that could be displayed
|
||||||
moderationActions.value = persistentListOf()
|
moderationActions.value = persistentListOf()
|
||||||
|
|
||||||
|
|||||||
+14
-14
@@ -12,7 +12,7 @@ import app.cash.turbine.TurbineTestContext
|
|||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationAction
|
import io.element.android.features.roommembermoderation.api.ModerationAction
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationPermissions
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationState
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
@@ -73,7 +73,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
)
|
)
|
||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(targetUser))
|
initialState.eventSink(RoomMemberModerationEvent.ShowActionsForUser(targetUser))
|
||||||
skipItems(1)
|
skipItems(1)
|
||||||
val updatedState = awaitState()
|
val updatedState = awaitState()
|
||||||
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
||||||
@@ -93,7 +93,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
)
|
)
|
||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(targetUser))
|
initialState.eventSink(RoomMemberModerationEvent.ShowActionsForUser(targetUser))
|
||||||
skipItems(2)
|
skipItems(2)
|
||||||
val updatedState = awaitState()
|
val updatedState = awaitState()
|
||||||
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
||||||
@@ -115,7 +115,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
)
|
)
|
||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(targetUser))
|
initialState.eventSink(RoomMemberModerationEvent.ShowActionsForUser(targetUser))
|
||||||
skipItems(2)
|
skipItems(2)
|
||||||
val updatedState = awaitState()
|
val updatedState = awaitState()
|
||||||
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
||||||
@@ -137,7 +137,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
)
|
)
|
||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(targetUser))
|
initialState.eventSink(RoomMemberModerationEvent.ShowActionsForUser(targetUser))
|
||||||
skipItems(2)
|
skipItems(2)
|
||||||
val updatedState = awaitState()
|
val updatedState = awaitState()
|
||||||
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
||||||
@@ -159,7 +159,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
)
|
)
|
||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(RoomMemberModerationEvents.ShowActionsForUser(targetUser))
|
initialState.eventSink(RoomMemberModerationEvent.ShowActionsForUser(targetUser))
|
||||||
skipItems(2)
|
skipItems(2)
|
||||||
val updatedState = awaitState()
|
val updatedState = awaitState()
|
||||||
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
assertThat(updatedState.selectedUser).isEqualTo(targetUser)
|
||||||
@@ -175,7 +175,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(
|
RoomMemberModerationEvent.ProcessAction(
|
||||||
targetUser = targetUser,
|
targetUser = targetUser,
|
||||||
action = ModerationAction.KickUser
|
action = ModerationAction.KickUser
|
||||||
)
|
)
|
||||||
@@ -192,7 +192,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(
|
RoomMemberModerationEvent.ProcessAction(
|
||||||
targetUser = targetUser,
|
targetUser = targetUser,
|
||||||
action = ModerationAction.BanUser
|
action = ModerationAction.BanUser
|
||||||
)
|
)
|
||||||
@@ -209,7 +209,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(
|
RoomMemberModerationEvent.ProcessAction(
|
||||||
targetUser = targetUser,
|
targetUser = targetUser,
|
||||||
action = ModerationAction.UnbanUser
|
action = ModerationAction.UnbanUser
|
||||||
)
|
)
|
||||||
@@ -235,7 +235,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(
|
RoomMemberModerationEvent.ProcessAction(
|
||||||
targetUser = targetUser,
|
targetUser = targetUser,
|
||||||
action = ModerationAction.KickUser
|
action = ModerationAction.KickUser
|
||||||
)
|
)
|
||||||
@@ -265,7 +265,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(
|
RoomMemberModerationEvent.ProcessAction(
|
||||||
targetUser = targetUser,
|
targetUser = targetUser,
|
||||||
action = ModerationAction.BanUser
|
action = ModerationAction.BanUser
|
||||||
)
|
)
|
||||||
@@ -295,7 +295,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(
|
RoomMemberModerationEvent.ProcessAction(
|
||||||
targetUser = targetUser,
|
targetUser = targetUser,
|
||||||
action = ModerationAction.UnbanUser
|
action = ModerationAction.UnbanUser
|
||||||
)
|
)
|
||||||
@@ -320,7 +320,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = room).test {
|
createRoomMemberModerationPresenter(room = room).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(
|
RoomMemberModerationEvent.ProcessAction(
|
||||||
targetUser = targetUser,
|
targetUser = targetUser,
|
||||||
action = ModerationAction.KickUser
|
action = ModerationAction.KickUser
|
||||||
)
|
)
|
||||||
@@ -340,7 +340,7 @@ class RoomMemberModerationPresenterTest {
|
|||||||
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
createRoomMemberModerationPresenter(room = aJoinedRoom()).test {
|
||||||
val initialState = awaitState()
|
val initialState = awaitState()
|
||||||
initialState.eventSink(
|
initialState.eventSink(
|
||||||
RoomMemberModerationEvents.ProcessAction(targetUser = targetUser, action = ModerationAction.BanUser)
|
RoomMemberModerationEvent.ProcessAction(targetUser = targetUser, action = ModerationAction.BanUser)
|
||||||
)
|
)
|
||||||
skipItems(2)
|
skipItems(2)
|
||||||
initialState.eventSink(InternalRoomMemberModerationEvents.Reset)
|
initialState.eventSink(InternalRoomMemberModerationEvents.Reset)
|
||||||
|
|||||||
+12
-12
@@ -16,7 +16,7 @@ import androidx.compose.ui.test.ExperimentalTestApi
|
|||||||
import androidx.compose.ui.test.v2.runAndroidComposeUiTest
|
import androidx.compose.ui.test.v2.runAndroidComposeUiTest
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationAction
|
import io.element.android.features.roommembermoderation.api.ModerationAction
|
||||||
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
import io.element.android.features.roommembermoderation.api.ModerationActionState
|
||||||
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvents
|
import io.element.android.features.roommembermoderation.api.RoomMemberModerationEvent
|
||||||
import io.element.android.libraries.architecture.AsyncAction
|
import io.element.android.libraries.architecture.AsyncAction
|
||||||
import io.element.android.libraries.matrix.api.user.MatrixUser
|
import io.element.android.libraries.matrix.api.user.MatrixUser
|
||||||
import io.element.android.libraries.testtags.TestTags
|
import io.element.android.libraries.testtags.TestTags
|
||||||
@@ -34,7 +34,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `clicking on display profile action calls onSelectAction`() = runAndroidComposeUiTest {
|
fun `clicking on display profile action calls onSelectAction`() = runAndroidComposeUiTest {
|
||||||
val user = anAlice()
|
val user = anAlice()
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>(expectEvents = false)
|
||||||
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.DisplayProfile, user) { callback ->
|
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.DisplayProfile, user) { callback ->
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
@@ -55,7 +55,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `clicking on kick user action calls onSelectAction`() = runAndroidComposeUiTest {
|
fun `clicking on kick user action calls onSelectAction`() = runAndroidComposeUiTest {
|
||||||
val user = anAlice()
|
val user = anAlice()
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>(expectEvents = false)
|
||||||
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.KickUser, user) { callback ->
|
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.KickUser, user) { callback ->
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
@@ -76,7 +76,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `clicking on ban user action calls onSelectAction`() = runAndroidComposeUiTest {
|
fun `clicking on ban user action calls onSelectAction`() = runAndroidComposeUiTest {
|
||||||
val user = anAlice()
|
val user = anAlice()
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>(expectEvents = false)
|
||||||
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.BanUser, user) { callback ->
|
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.BanUser, user) { callback ->
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
@@ -97,7 +97,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
@Test
|
@Test
|
||||||
fun `clicking on unban user action calls onSelectAction`() = runAndroidComposeUiTest {
|
fun `clicking on unban user action calls onSelectAction`() = runAndroidComposeUiTest {
|
||||||
val user = anAlice()
|
val user = anAlice()
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>(expectEvents = false)
|
||||||
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.UnbanUser, user) { callback ->
|
ensureCalledOnceWithTwoParams<ModerationAction, MatrixUser>(ModerationAction.UnbanUser, user) { callback ->
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
@@ -117,7 +117,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking submit on kick confirmation dialog sends DoKickUser event`() = runAndroidComposeUiTest {
|
fun `clicking submit on kick confirmation dialog sends DoKickUser event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>()
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>()
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
selectedUser = anAlice(),
|
selectedUser = anAlice(),
|
||||||
@@ -131,7 +131,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking dismiss on kick confirmation dialog sends Reset event`() = runAndroidComposeUiTest {
|
fun `clicking dismiss on kick confirmation dialog sends Reset event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>()
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>()
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
selectedUser = anAlice(),
|
selectedUser = anAlice(),
|
||||||
@@ -145,7 +145,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking submit on ban confirmation dialog sends DoBanUser event`() = runAndroidComposeUiTest {
|
fun `clicking submit on ban confirmation dialog sends DoBanUser event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>()
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>()
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
selectedUser = anAlice(),
|
selectedUser = anAlice(),
|
||||||
@@ -159,7 +159,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking dismiss on ban confirmation dialog sends Reset event`() = runAndroidComposeUiTest {
|
fun `clicking dismiss on ban confirmation dialog sends Reset event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>()
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>()
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
selectedUser = anAlice(),
|
selectedUser = anAlice(),
|
||||||
@@ -173,7 +173,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking confirm on unban confirmation dialog sends DoUnbanUser event`() = runAndroidComposeUiTest {
|
fun `clicking confirm on unban confirmation dialog sends DoUnbanUser event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>()
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>()
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
selectedUser = anAlice(),
|
selectedUser = anAlice(),
|
||||||
@@ -187,7 +187,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `clicking dismiss on unban confirmation dialog sends Reset event`() = runAndroidComposeUiTest {
|
fun `clicking dismiss on unban confirmation dialog sends Reset event`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>()
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>()
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
selectedUser = anAlice(),
|
selectedUser = anAlice(),
|
||||||
@@ -201,7 +201,7 @@ class RoomMemberModerationViewTest : RobolectricTest() {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `disabled actions are not clickable`() = runAndroidComposeUiTest {
|
fun `disabled actions are not clickable`() = runAndroidComposeUiTest {
|
||||||
val eventsRecorder = EventsRecorder<RoomMemberModerationEvents>(expectEvents = false)
|
val eventsRecorder = EventsRecorder<RoomMemberModerationEvent>(expectEvents = false)
|
||||||
setRoomMemberModerationView(
|
setRoomMemberModerationView(
|
||||||
aRoomMembersModerationState(
|
aRoomMembersModerationState(
|
||||||
selectedUser = anAlice(),
|
selectedUser = anAlice(),
|
||||||
|
|||||||
Reference in New Issue
Block a user