diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvents.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvent.kt similarity index 63% rename from features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvents.kt rename to features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvent.kt index 69fad02c25..b250fee2d1 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvents.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsEvent.kt @@ -10,9 +10,9 @@ package io.element.android.features.rolesandpermissions.impl.root import io.element.android.libraries.matrix.api.room.RoomMember -sealed interface RolesAndPermissionsEvents { - data object ChangeOwnRole : RolesAndPermissionsEvents - data class DemoteSelfTo(val role: RoomMember.Role) : RolesAndPermissionsEvents - data object ResetPermissions : RolesAndPermissionsEvents - data object CancelPendingAction : RolesAndPermissionsEvents +sealed interface RolesAndPermissionsEvent { + data object ChangeOwnRole : RolesAndPermissionsEvent + data class DemoteSelfTo(val role: RoomMember.Role) : RolesAndPermissionsEvent + data object ResetPermissions : RolesAndPermissionsEvent + data object CancelPendingAction : RolesAndPermissionsEvent } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsPresenter.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsPresenter.kt index dd3a59b99e..1231089af0 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsPresenter.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsPresenter.kt @@ -63,20 +63,20 @@ class RolesAndPermissionsPresenter( val changeOwnRoleAction = remember { mutableStateOf>(AsyncAction.Uninitialized) } val resetPermissionsAction = remember { mutableStateOf>(AsyncAction.Uninitialized) } - fun handleEvent(event: RolesAndPermissionsEvents) { + fun handleEvent(event: RolesAndPermissionsEvent) { when (event) { - is RolesAndPermissionsEvents.ChangeOwnRole -> { + is RolesAndPermissionsEvent.ChangeOwnRole -> { changeOwnRoleAction.value = AsyncAction.ConfirmingNoParams } - is RolesAndPermissionsEvents.CancelPendingAction -> { + is RolesAndPermissionsEvent.CancelPendingAction -> { changeOwnRoleAction.value = AsyncAction.Uninitialized resetPermissionsAction.value = AsyncAction.Uninitialized } - is RolesAndPermissionsEvents.DemoteSelfTo -> coroutineScope.demoteSelfTo( + is RolesAndPermissionsEvent.DemoteSelfTo -> coroutineScope.demoteSelfTo( role = event.role, changeOwnRoleAction = changeOwnRoleAction, ) - is RolesAndPermissionsEvents.ResetPermissions -> if (resetPermissionsAction.value.isConfirming()) { + is RolesAndPermissionsEvent.ResetPermissions -> if (resetPermissionsAction.value.isConfirming()) { coroutineScope.resetPermissions(resetPermissionsAction) } else { resetPermissionsAction.value = AsyncAction.ConfirmingNoParams diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsState.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsState.kt index 626ad3b699..a1345b27c2 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsState.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsState.kt @@ -20,7 +20,7 @@ data class RolesAndPermissionsState( val availableSelfDemoteActions: ImmutableList, val changeOwnRoleAction: AsyncAction, val resetPermissionsAction: AsyncAction, - val eventSink: (RolesAndPermissionsEvents) -> Unit, + val eventSink: (RolesAndPermissionsEvent) -> Unit, ) { val canSelfDemote = availableSelfDemoteActions.isNotEmpty() } diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsStatePreviewParam.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsStatePreviewParam.kt index 2fc39212d8..2229c185b9 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsStatePreviewParam.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsStatePreviewParam.kt @@ -58,7 +58,7 @@ internal fun aRolesAndPermissionsState( availableSelfDemoteActions: List = listOf(SelfDemoteAction.ToModerator, SelfDemoteAction.ToMember), changeOwnRoleAction: AsyncAction = AsyncAction.Uninitialized, resetPermissionsAction: AsyncAction = AsyncAction.Uninitialized, - eventSink: (RolesAndPermissionsEvents) -> Unit = {}, + eventSink: (RolesAndPermissionsEvent) -> Unit = {}, ) = RolesAndPermissionsState( roomSupportsOwnerRole = roomSupportsOwners, adminCount = adminCount, diff --git a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt index d9c09bbc64..6c9c4396b2 100644 --- a/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt +++ b/features/rolesandpermissions/impl/src/main/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsView.kt @@ -80,7 +80,7 @@ fun RolesAndPermissionsView( if (state.canSelfDemote) { ListItem( content = { Text(stringResource(R.string.screen_room_roles_and_permissions_change_my_role)) }, - onClick = { state.eventSink(RolesAndPermissionsEvents.ChangeOwnRole) }, + onClick = { state.eventSink(RolesAndPermissionsEvent.ChangeOwnRole) }, leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Edit())) ) } @@ -94,7 +94,7 @@ fun RolesAndPermissionsView( ListItem( content = { Text(stringResource(R.string.screen_room_roles_and_permissions_reset)) }, leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Delete())), - onClick = { state.eventSink(RolesAndPermissionsEvents.ResetPermissions) }, + onClick = { state.eventSink(RolesAndPermissionsEvent.ResetPermissions) }, style = ListItemStyle.Destructive, ) } @@ -107,12 +107,12 @@ fun RolesAndPermissionsView( content = stringResource(R.string.screen_room_roles_and_permissions_reset_confirm_description), submitText = stringResource(CommonStrings.action_reset), destructiveSubmit = true, - onSubmitClick = { state.eventSink(RolesAndPermissionsEvents.ResetPermissions) }, - onDismiss = { state.eventSink(RolesAndPermissionsEvents.CancelPendingAction) }, + onSubmitClick = { state.eventSink(RolesAndPermissionsEvent.ResetPermissions) }, + onDismiss = { state.eventSink(RolesAndPermissionsEvent.CancelPendingAction) }, ) }, - onSuccess = { state.eventSink(RolesAndPermissionsEvents.CancelPendingAction) }, - onErrorDismiss = { state.eventSink(RolesAndPermissionsEvents.CancelPendingAction) } + onSuccess = { state.eventSink(RolesAndPermissionsEvent.CancelPendingAction) }, + onErrorDismiss = { state.eventSink(RolesAndPermissionsEvent.CancelPendingAction) } ) when (state.changeOwnRoleAction) { @@ -128,7 +128,7 @@ fun RolesAndPermissionsView( is AsyncAction.Failure -> { ErrorDialog( content = stringResource(CommonStrings.error_unknown), - onSubmit = { state.eventSink(RolesAndPermissionsEvents.CancelPendingAction) } + onSubmit = { state.eventSink(RolesAndPermissionsEvent.CancelPendingAction) } ) } else -> Unit @@ -139,7 +139,7 @@ fun RolesAndPermissionsView( @Composable private fun ChangeOwnRoleBottomSheet( availableDemoteActions: ImmutableList, - eventSink: (RolesAndPermissionsEvents) -> Unit, + eventSink: (RolesAndPermissionsEvent) -> Unit, ) { val coroutineScope = rememberCoroutineScope() val sheetState = rememberBottomSheetState( @@ -148,7 +148,7 @@ private fun ChangeOwnRoleBottomSheet( ) fun dismiss() { sheetState.hide(coroutineScope) { - eventSink(RolesAndPermissionsEvents.CancelPendingAction) + eventSink(RolesAndPermissionsEvent.CancelPendingAction) } } ModalBottomSheet( @@ -176,7 +176,7 @@ private fun ChangeOwnRoleBottomSheet( content = { Text(stringResource(demoteAction.titleRes)) }, onClick = { sheetState.hide(coroutineScope) { - eventSink(RolesAndPermissionsEvents.DemoteSelfTo(demoteAction.role)) + eventSink(RolesAndPermissionsEvent.DemoteSelfTo(demoteAction.role)) } }, style = ListItemStyle.Destructive, diff --git a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionPresenterTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionPresenterTest.kt index 54bd6b7987..29ba0d368a 100644 --- a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionPresenterTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionPresenterTest.kt @@ -45,7 +45,7 @@ class RolesAndPermissionPresenterTest { val presenter = createRolesAndPermissionsPresenter() presenter.test { val initialState = awaitItem() - initialState.eventSink(RolesAndPermissionsEvents.ChangeOwnRole) + initialState.eventSink(RolesAndPermissionsEvent.ChangeOwnRole) assertThat(awaitItem().changeOwnRoleAction).isEqualTo(AsyncAction.ConfirmingNoParams) } } @@ -62,7 +62,7 @@ class RolesAndPermissionPresenterTest { ) presenter.test { val initialState = awaitItem() - initialState.eventSink(RolesAndPermissionsEvents.DemoteSelfTo(RoomMember.Role.Moderator)) + initialState.eventSink(RolesAndPermissionsEvent.DemoteSelfTo(RoomMember.Role.Moderator)) runCurrent() assertThat(awaitItem().changeOwnRoleAction).isEqualTo(AsyncAction.Loading) @@ -82,7 +82,7 @@ class RolesAndPermissionPresenterTest { val presenter = createRolesAndPermissionsPresenter(room = room, dispatchers = testCoroutineDispatchers()) presenter.test { val initialState = awaitItem() - initialState.eventSink(RolesAndPermissionsEvents.DemoteSelfTo(RoomMember.Role.Moderator)) + initialState.eventSink(RolesAndPermissionsEvent.DemoteSelfTo(RoomMember.Role.Moderator)) runCurrent() assertThat(awaitItem().changeOwnRoleAction).isEqualTo(AsyncAction.Loading) @@ -90,7 +90,7 @@ class RolesAndPermissionPresenterTest { runCurrent() assertThat(awaitItem().changeOwnRoleAction).isInstanceOf(AsyncAction.Failure::class.java) - initialState.eventSink(RolesAndPermissionsEvents.CancelPendingAction) + initialState.eventSink(RolesAndPermissionsEvent.CancelPendingAction) assertThat(awaitItem().changeOwnRoleAction).isEqualTo(AsyncAction.Uninitialized) } } @@ -100,8 +100,8 @@ class RolesAndPermissionPresenterTest { val presenter = createRolesAndPermissionsPresenter() presenter.test { val initialState = awaitItem() - initialState.eventSink(RolesAndPermissionsEvents.ChangeOwnRole) - awaitItem().eventSink(RolesAndPermissionsEvents.CancelPendingAction) + initialState.eventSink(RolesAndPermissionsEvent.ChangeOwnRole) + awaitItem().eventSink(RolesAndPermissionsEvent.CancelPendingAction) assertThat(awaitItem().changeOwnRoleAction).isEqualTo(AsyncAction.Uninitialized) } @@ -119,9 +119,9 @@ class RolesAndPermissionPresenterTest { ) presenter.test { val initialState = awaitItem() - initialState.eventSink(RolesAndPermissionsEvents.ResetPermissions) + initialState.eventSink(RolesAndPermissionsEvent.ResetPermissions) // Confirmation - awaitItem().eventSink(RolesAndPermissionsEvents.ResetPermissions) + awaitItem().eventSink(RolesAndPermissionsEvent.ResetPermissions) assertThat(awaitItem().resetPermissionsAction).isEqualTo(AsyncAction.Loading) assertThat(awaitItem().resetPermissionsAction).isEqualTo(AsyncAction.Success(Unit)) @@ -134,8 +134,8 @@ class RolesAndPermissionPresenterTest { val presenter = createRolesAndPermissionsPresenter() presenter.test { val initialState = awaitItem() - initialState.eventSink(RolesAndPermissionsEvents.ResetPermissions) - awaitItem().eventSink(RolesAndPermissionsEvents.CancelPendingAction) + initialState.eventSink(RolesAndPermissionsEvent.ResetPermissions) + awaitItem().eventSink(RolesAndPermissionsEvent.CancelPendingAction) assertThat(awaitItem().resetPermissionsAction).isEqualTo(AsyncAction.Uninitialized) } diff --git a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsViewTest.kt b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsViewTest.kt index 8a3b6fd766..7e94468d48 100644 --- a/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsViewTest.kt +++ b/features/rolesandpermissions/impl/src/test/kotlin/io/element/android/features/rolesandpermissions/impl/root/RolesAndPermissionsViewTest.kt @@ -92,19 +92,19 @@ class RolesAndPermissionsViewTest : RobolectricTest() { @Test @Config(qualifiers = "h640dp") fun `tapping on reset permissions triggers ResetPermissions event`() = runAndroidComposeUiTest { - val recorder = EventsRecorder() + val recorder = EventsRecorder() setRolesAndPermissionsView( state = aRolesAndPermissionsState( eventSink = recorder, ), ) clickOn(R.string.screen_room_roles_and_permissions_reset) - recorder.assertSingle(RolesAndPermissionsEvents.ResetPermissions) + recorder.assertSingle(RolesAndPermissionsEvent.ResetPermissions) } @Test fun `tapping on Reset in the reset permissions confirmation dialog triggers ResetPermissions event`() = runAndroidComposeUiTest { - val recorder = EventsRecorder() + val recorder = EventsRecorder() setRolesAndPermissionsView( state = aRolesAndPermissionsState( resetPermissionsAction = AsyncAction.ConfirmingNoParams, @@ -112,12 +112,12 @@ class RolesAndPermissionsViewTest : RobolectricTest() { ), ) clickOn(CommonStrings.action_reset) - recorder.assertSingle(RolesAndPermissionsEvents.ResetPermissions) + recorder.assertSingle(RolesAndPermissionsEvent.ResetPermissions) } @Test fun `tapping on Cancel in the reset permissions confirmation dialog triggers CancelPendingAction event`() = runAndroidComposeUiTest { - val recorder = EventsRecorder() + val recorder = EventsRecorder() setRolesAndPermissionsView( state = aRolesAndPermissionsState( resetPermissionsAction = AsyncAction.ConfirmingNoParams, @@ -125,12 +125,12 @@ class RolesAndPermissionsViewTest : RobolectricTest() { ), ) clickOn(CommonStrings.action_cancel) - recorder.assertSingle(RolesAndPermissionsEvents.CancelPendingAction) + recorder.assertSingle(RolesAndPermissionsEvent.CancelPendingAction) } @Test fun `tapping on 'Demote to moderator' in the demote self bottom sheet triggers the right event`() = runAndroidComposeUiTest { - val recorder = EventsRecorder() + val recorder = EventsRecorder() setRolesAndPermissionsView( state = aRolesAndPermissionsState( changeOwnRoleAction = AsyncAction.ConfirmingNoParams, @@ -139,12 +139,12 @@ class RolesAndPermissionsViewTest : RobolectricTest() { ) clickOn(R.string.screen_room_roles_and_permissions_change_role_demote_to_moderator) mainClock.advanceTimeBy(1_000L) - recorder.assertSingle(RolesAndPermissionsEvents.DemoteSelfTo(RoomMember.Role.Moderator)) + recorder.assertSingle(RolesAndPermissionsEvent.DemoteSelfTo(RoomMember.Role.Moderator)) } @Test fun `tapping on 'Demote to member' in the demote self bottom sheet triggers the right event`() = runAndroidComposeUiTest { - val recorder = EventsRecorder() + val recorder = EventsRecorder() setRolesAndPermissionsView( state = aRolesAndPermissionsState( changeOwnRoleAction = AsyncAction.ConfirmingNoParams, @@ -153,12 +153,12 @@ class RolesAndPermissionsViewTest : RobolectricTest() { ) clickOn(R.string.screen_room_roles_and_permissions_change_role_demote_to_member) mainClock.advanceTimeBy(1_000L) - recorder.assertSingle(RolesAndPermissionsEvents.DemoteSelfTo(RoomMember.Role.User)) + recorder.assertSingle(RolesAndPermissionsEvent.DemoteSelfTo(RoomMember.Role.User)) } @Test fun `tapping on 'Cancel' in the demote self bottom sheet triggers the right event`() = runAndroidComposeUiTest { - val recorder = EventsRecorder() + val recorder = EventsRecorder() setRolesAndPermissionsView( state = aRolesAndPermissionsState( changeOwnRoleAction = AsyncAction.ConfirmingNoParams, @@ -167,7 +167,7 @@ class RolesAndPermissionsViewTest : RobolectricTest() { ) clickOn(CommonStrings.action_cancel) mainClock.advanceTimeBy(1_000L) - recorder.assertSingle(RolesAndPermissionsEvents.CancelPendingAction) + recorder.assertSingle(RolesAndPermissionsEvent.CancelPendingAction) } }