mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 12:07:28 +00:00
BlockedUsersEvents -> BlockedUsersEvent
This commit is contained in:
+5
-5
@@ -10,9 +10,9 @@ package io.element.android.features.preferences.impl.blockedusers
|
||||
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
|
||||
sealed interface BlockedUsersEvents {
|
||||
data class Unblock(val userId: UserId) : BlockedUsersEvents
|
||||
data class CopyToClipboard(val userId: UserId) : BlockedUsersEvents
|
||||
data object ConfirmUnblock : BlockedUsersEvents
|
||||
data object Cancel : BlockedUsersEvents
|
||||
sealed interface BlockedUsersEvent {
|
||||
data class Unblock(val userId: UserId) : BlockedUsersEvent
|
||||
data class CopyToClipboard(val userId: UserId) : BlockedUsersEvent
|
||||
data object ConfirmUnblock : BlockedUsersEvent
|
||||
data object Cancel : BlockedUsersEvent
|
||||
}
|
||||
+5
-5
@@ -74,23 +74,23 @@ class BlockedUsersPresenter(
|
||||
|
||||
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
|
||||
|
||||
fun handleEvent(event: BlockedUsersEvents) {
|
||||
fun handleEvent(event: BlockedUsersEvent) {
|
||||
when (event) {
|
||||
is BlockedUsersEvents.Unblock -> {
|
||||
is BlockedUsersEvent.Unblock -> {
|
||||
pendingUserToUnblock = event.userId
|
||||
unblockUserAction.value = AsyncAction.ConfirmingNoParams
|
||||
}
|
||||
is BlockedUsersEvents.CopyToClipboard -> {
|
||||
is BlockedUsersEvent.CopyToClipboard -> {
|
||||
clipboardHelper.copyPlainText(event.userId.value)
|
||||
snackbarDispatcher.post(SnackbarMessage(CommonStrings.common_copied_to_clipboard))
|
||||
}
|
||||
BlockedUsersEvents.ConfirmUnblock -> {
|
||||
BlockedUsersEvent.ConfirmUnblock -> {
|
||||
pendingUserToUnblock?.let {
|
||||
coroutineScope.unblockUser(it, unblockUserAction)
|
||||
pendingUserToUnblock = null
|
||||
}
|
||||
}
|
||||
BlockedUsersEvents.Cancel -> {
|
||||
BlockedUsersEvent.Cancel -> {
|
||||
pendingUserToUnblock = null
|
||||
unblockUserAction.value = AsyncAction.Uninitialized
|
||||
}
|
||||
|
||||
+1
-1
@@ -17,5 +17,5 @@ data class BlockedUsersState(
|
||||
val blockedUsers: ImmutableList<MatrixUser>,
|
||||
val unblockUserAction: AsyncAction<Unit>,
|
||||
val snackbarMessage: SnackbarMessage?,
|
||||
val eventSink: (BlockedUsersEvents) -> Unit,
|
||||
val eventSink: (BlockedUsersEvent) -> Unit,
|
||||
)
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ internal fun aBlockedUsersState(
|
||||
blockedUsers: List<MatrixUser> = aMatrixUserList(),
|
||||
unblockUserAction: AsyncAction<Unit> = AsyncAction.Uninitialized,
|
||||
snackbarMessage: SnackbarMessage? = null,
|
||||
eventSink: (BlockedUsersEvents) -> Unit = {},
|
||||
eventSink: (BlockedUsersEvent) -> Unit = {},
|
||||
): BlockedUsersState {
|
||||
return BlockedUsersState(
|
||||
blockedUsers = blockedUsers.toImmutableList(),
|
||||
|
||||
+4
-4
@@ -64,8 +64,8 @@ fun BlockedUsersView(
|
||||
items(state.blockedUsers) { matrixUser ->
|
||||
BlockedUserItem(
|
||||
matrixUser = matrixUser,
|
||||
onClick = { state.eventSink(BlockedUsersEvents.Unblock(it)) },
|
||||
onLongClick = { state.eventSink(BlockedUsersEvents.CopyToClipboard(it)) },
|
||||
onClick = { state.eventSink(BlockedUsersEvent.Unblock(it)) },
|
||||
onLongClick = { state.eventSink(BlockedUsersEvent.CopyToClipboard(it)) },
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -99,8 +99,8 @@ fun BlockedUsersView(
|
||||
title = stringResource(R.string.screen_blocked_users_unblock_alert_title),
|
||||
content = stringResource(R.string.screen_blocked_users_unblock_alert_description),
|
||||
submitText = stringResource(R.string.screen_blocked_users_unblock_alert_action),
|
||||
onSubmitClick = { state.eventSink(BlockedUsersEvents.ConfirmUnblock) },
|
||||
onDismiss = { state.eventSink(BlockedUsersEvents.Cancel) }
|
||||
onSubmitClick = { state.eventSink(BlockedUsersEvent.ConfirmUnblock) },
|
||||
onDismiss = { state.eventSink(BlockedUsersEvent.Cancel) }
|
||||
)
|
||||
}
|
||||
else -> Unit
|
||||
|
||||
+11
-11
@@ -33,7 +33,7 @@ import org.junit.Test
|
||||
class BlockedUserViewTest : RobolectricTest() {
|
||||
@Test
|
||||
fun `clicking on back invokes back callback`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvents>(expectEvents = false)
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvent>(expectEvents = false)
|
||||
ensureCalledOnce { callback ->
|
||||
setBlockedUsersView(
|
||||
aBlockedUsersState(
|
||||
@@ -47,7 +47,7 @@ class BlockedUserViewTest : RobolectricTest() {
|
||||
|
||||
@Test
|
||||
fun `clicking on a user emits the expected Event`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvents>()
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvent>()
|
||||
val userList = aMatrixUserList()
|
||||
setBlockedUsersView(
|
||||
aBlockedUsersState(
|
||||
@@ -56,12 +56,12 @@ class BlockedUserViewTest : RobolectricTest() {
|
||||
),
|
||||
)
|
||||
onNodeWithText(userList.first().displayName.orEmpty()).performClick()
|
||||
eventsRecorder.assertSingle(BlockedUsersEvents.Unblock(userList.first().userId))
|
||||
eventsRecorder.assertSingle(BlockedUsersEvent.Unblock(userList.first().userId))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `long clicking on a user emits the expected Event`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvents>()
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvent>()
|
||||
val userList = aMatrixUserList()
|
||||
setBlockedUsersView(
|
||||
aBlockedUsersState(
|
||||
@@ -70,12 +70,12 @@ class BlockedUserViewTest : RobolectricTest() {
|
||||
),
|
||||
)
|
||||
onNodeWithText(userList.first().displayName.orEmpty()).performTouchInput { longClick() }
|
||||
eventsRecorder.assertSingle(BlockedUsersEvents.CopyToClipboard(userList.first().userId))
|
||||
eventsRecorder.assertSingle(BlockedUsersEvent.CopyToClipboard(userList.first().userId))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `clicking on cancel sends a BlockedUsersEvents`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvents>()
|
||||
fun `clicking on cancel sends a BlockedUsersEvent`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvent>()
|
||||
setBlockedUsersView(
|
||||
aBlockedUsersState(
|
||||
unblockUserAction = AsyncAction.ConfirmingNoParams,
|
||||
@@ -83,12 +83,12 @@ class BlockedUserViewTest : RobolectricTest() {
|
||||
),
|
||||
)
|
||||
clickOn(CommonStrings.action_cancel)
|
||||
eventsRecorder.assertSingle(BlockedUsersEvents.Cancel)
|
||||
eventsRecorder.assertSingle(BlockedUsersEvent.Cancel)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `clicking on confirm sends a BlockedUsersEvents`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvents>()
|
||||
fun `clicking on confirm sends a BlockedUsersEvent`() = runAndroidComposeUiTest {
|
||||
val eventsRecorder = EventsRecorder<BlockedUsersEvent>()
|
||||
setBlockedUsersView(
|
||||
aBlockedUsersState(
|
||||
unblockUserAction = AsyncAction.ConfirmingNoParams,
|
||||
@@ -96,7 +96,7 @@ class BlockedUserViewTest : RobolectricTest() {
|
||||
),
|
||||
)
|
||||
clickOn(R.string.screen_blocked_users_unblock_alert_action)
|
||||
eventsRecorder.assertSingle(BlockedUsersEvents.ConfirmUnblock)
|
||||
eventsRecorder.assertSingle(BlockedUsersEvent.ConfirmUnblock)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -118,10 +118,10 @@ class BlockedUsersPresenterTest {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(BlockedUsersEvents.Unblock(A_USER_ID))
|
||||
initialState.eventSink(BlockedUsersEvent.Unblock(A_USER_ID))
|
||||
|
||||
assertThat(awaitItem().unblockUserAction).isInstanceOf(AsyncAction.Confirming::class.java)
|
||||
initialState.eventSink(BlockedUsersEvents.ConfirmUnblock)
|
||||
initialState.eventSink(BlockedUsersEvent.ConfirmUnblock)
|
||||
|
||||
assertThat(awaitItem().unblockUserAction).isInstanceOf(AsyncAction.Loading::class.java)
|
||||
assertThat(awaitItem().unblockUserAction).isInstanceOf(AsyncAction.Success::class.java)
|
||||
@@ -141,10 +141,10 @@ class BlockedUsersPresenterTest {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(BlockedUsersEvents.Unblock(A_USER_ID))
|
||||
initialState.eventSink(BlockedUsersEvent.Unblock(A_USER_ID))
|
||||
|
||||
assertThat(awaitItem().unblockUserAction).isInstanceOf(AsyncAction.Confirming::class.java)
|
||||
initialState.eventSink(BlockedUsersEvents.ConfirmUnblock)
|
||||
initialState.eventSink(BlockedUsersEvent.ConfirmUnblock)
|
||||
|
||||
assertThat(awaitItem().unblockUserAction).isInstanceOf(AsyncAction.Loading::class.java)
|
||||
assertThat(awaitItem().unblockUserAction).isInstanceOf(AsyncAction.Failure::class.java)
|
||||
@@ -163,10 +163,10 @@ class BlockedUsersPresenterTest {
|
||||
presenter.present()
|
||||
}.test {
|
||||
val initialState = awaitItem()
|
||||
initialState.eventSink(BlockedUsersEvents.Unblock(A_USER_ID))
|
||||
initialState.eventSink(BlockedUsersEvent.Unblock(A_USER_ID))
|
||||
|
||||
assertThat(awaitItem().unblockUserAction).isInstanceOf(AsyncAction.Confirming::class.java)
|
||||
initialState.eventSink(BlockedUsersEvents.Cancel)
|
||||
initialState.eventSink(BlockedUsersEvent.Cancel)
|
||||
|
||||
assertThat(awaitItem().unblockUserAction).isEqualTo(AsyncAction.Uninitialized)
|
||||
}
|
||||
@@ -187,7 +187,7 @@ class BlockedUsersPresenterTest {
|
||||
}.test {
|
||||
val initialState = awaitItem()
|
||||
assertThat(initialState.snackbarMessage).isNull()
|
||||
initialState.eventSink(BlockedUsersEvents.CopyToClipboard(A_USER_ID))
|
||||
initialState.eventSink(BlockedUsersEvent.CopyToClipboard(A_USER_ID))
|
||||
|
||||
assertThat(clipboardHelper.clipboardContents).isEqualTo(A_USER_ID.value)
|
||||
assertThat(awaitItem().snackbarMessage?.messageResId).isEqualTo(CommonStrings.common_copied_to_clipboard)
|
||||
@@ -201,7 +201,7 @@ class BlockedUsersPresenterTest {
|
||||
moleculeFlow(RecompositionMode.Immediate) {
|
||||
presenter.present()
|
||||
}.test {
|
||||
awaitItem().eventSink(BlockedUsersEvents.ConfirmUnblock)
|
||||
awaitItem().eventSink(BlockedUsersEvent.ConfirmUnblock)
|
||||
ensureAllEventsConsumed()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user