From 5c1bd6ddb7bb25456e620361418b144bf54fcc9e Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 24 Jan 2025 16:27:24 +0100 Subject: [PATCH] feat(security&privacy) : make the whole RoomDirectoryVisibility item clickable --- .../impl/securityandprivacy/SecurityAndPrivacyEvents.kt | 2 +- .../securityandprivacy/SecurityAndPrivacyPresenter.kt | 7 +++++-- .../impl/securityandprivacy/SecurityAndPrivacyView.kt | 9 +++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyEvents.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyEvents.kt index be076b9c52..352bccf453 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyEvents.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyEvents.kt @@ -15,6 +15,6 @@ sealed interface SecurityAndPrivacyEvents { data object CancelEnableEncryption : SecurityAndPrivacyEvents data object ConfirmEnableEncryption: SecurityAndPrivacyEvents data class ChangeHistoryVisibility(val historyVisibility: SecurityAndPrivacyHistoryVisibility) : SecurityAndPrivacyEvents - data class ChangeRoomVisibility(val isVisibleInRoomDirectory: Boolean) : SecurityAndPrivacyEvents + data object ToggleRoomVisibility : SecurityAndPrivacyEvents data object DismissSaveError : SecurityAndPrivacyEvents } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt index fcd2946f85..2450786dc1 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyPresenter.kt @@ -120,8 +120,11 @@ class SecurityAndPrivacyPresenter @AssistedInject constructor( is SecurityAndPrivacyEvents.ChangeHistoryVisibility -> { editedHistoryVisibility = event.historyVisibility } - is SecurityAndPrivacyEvents.ChangeRoomVisibility -> { - editedVisibleInRoomDirectory = AsyncData.Success(event.isVisibleInRoomDirectory) + SecurityAndPrivacyEvents.ToggleRoomVisibility -> { + editedVisibleInRoomDirectory = when (val edited = editedVisibleInRoomDirectory) { + is AsyncData.Success -> AsyncData.Success(!edited.data) + else -> edited + } } SecurityAndPrivacyEvents.EditRoomAddress -> navigator.openEditRoomAddress() SecurityAndPrivacyEvents.CancelEnableEncryption -> { diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyView.kt index aa0321dc77..10d2a7d546 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/securityandprivacy/SecurityAndPrivacyView.kt @@ -91,8 +91,8 @@ fun SecurityAndPrivacyView( homeserverName = state.homeserverName, onRoomAddressClick = { state.eventSink(SecurityAndPrivacyEvents.EditRoomAddress) }, isVisibleInRoomDirectory = state.editedSettings.isVisibleInRoomDirectory, - onVisibilityChange = { isVisible -> - state.eventSink(SecurityAndPrivacyEvents.ChangeRoomVisibility(isVisible)) + onVisibilityChange = { + state.eventSink(SecurityAndPrivacyEvents.ToggleRoomVisibility) }, ) } @@ -241,7 +241,7 @@ private fun RoomAddressSection( homeserverName: String, isVisibleInRoomDirectory: AsyncData, onRoomAddressClick: () -> Unit, - onVisibilityChange: (Boolean) -> Unit, + onVisibilityChange: () -> Unit, modifier: Modifier = Modifier, ) { SecurityAndPrivacySection( @@ -263,6 +263,7 @@ private fun RoomAddressSection( supportingContent = { Text(text = stringResource(R.string.screen_security_and_privacy_room_directory_visibility_section_footer, homeserverName)) }, + onClick = if (isVisibleInRoomDirectory.isSuccess()) onVisibilityChange else null, trailingContent = when (isVisibleInRoomDirectory) { is AsyncData.Uninitialized, is AsyncData.Loading -> { @@ -284,7 +285,7 @@ private fun RoomAddressSection( is AsyncData.Success -> { ListItemContent.Switch( checked = isVisibleInRoomDirectory.data, - onChange = onVisibilityChange, + onChange = { onVisibilityChange() }, ) } }