feat(security&privacy) : make the whole RoomDirectoryVisibility item clickable

This commit is contained in:
ganfra 2025-01-24 16:27:24 +01:00
parent 9c2f8d39e4
commit 5c1bd6ddb7
3 changed files with 11 additions and 7 deletions

View file

@ -15,6 +15,6 @@ sealed interface SecurityAndPrivacyEvents {
data object CancelEnableEncryption : SecurityAndPrivacyEvents data object CancelEnableEncryption : SecurityAndPrivacyEvents
data object ConfirmEnableEncryption: SecurityAndPrivacyEvents data object ConfirmEnableEncryption: SecurityAndPrivacyEvents
data class ChangeHistoryVisibility(val historyVisibility: SecurityAndPrivacyHistoryVisibility) : SecurityAndPrivacyEvents data class ChangeHistoryVisibility(val historyVisibility: SecurityAndPrivacyHistoryVisibility) : SecurityAndPrivacyEvents
data class ChangeRoomVisibility(val isVisibleInRoomDirectory: Boolean) : SecurityAndPrivacyEvents data object ToggleRoomVisibility : SecurityAndPrivacyEvents
data object DismissSaveError : SecurityAndPrivacyEvents data object DismissSaveError : SecurityAndPrivacyEvents
} }

View file

@ -120,8 +120,11 @@ class SecurityAndPrivacyPresenter @AssistedInject constructor(
is SecurityAndPrivacyEvents.ChangeHistoryVisibility -> { is SecurityAndPrivacyEvents.ChangeHistoryVisibility -> {
editedHistoryVisibility = event.historyVisibility editedHistoryVisibility = event.historyVisibility
} }
is SecurityAndPrivacyEvents.ChangeRoomVisibility -> { SecurityAndPrivacyEvents.ToggleRoomVisibility -> {
editedVisibleInRoomDirectory = AsyncData.Success(event.isVisibleInRoomDirectory) editedVisibleInRoomDirectory = when (val edited = editedVisibleInRoomDirectory) {
is AsyncData.Success -> AsyncData.Success(!edited.data)
else -> edited
}
} }
SecurityAndPrivacyEvents.EditRoomAddress -> navigator.openEditRoomAddress() SecurityAndPrivacyEvents.EditRoomAddress -> navigator.openEditRoomAddress()
SecurityAndPrivacyEvents.CancelEnableEncryption -> { SecurityAndPrivacyEvents.CancelEnableEncryption -> {

View file

@ -91,8 +91,8 @@ fun SecurityAndPrivacyView(
homeserverName = state.homeserverName, homeserverName = state.homeserverName,
onRoomAddressClick = { state.eventSink(SecurityAndPrivacyEvents.EditRoomAddress) }, onRoomAddressClick = { state.eventSink(SecurityAndPrivacyEvents.EditRoomAddress) },
isVisibleInRoomDirectory = state.editedSettings.isVisibleInRoomDirectory, isVisibleInRoomDirectory = state.editedSettings.isVisibleInRoomDirectory,
onVisibilityChange = { isVisible -> onVisibilityChange = {
state.eventSink(SecurityAndPrivacyEvents.ChangeRoomVisibility(isVisible)) state.eventSink(SecurityAndPrivacyEvents.ToggleRoomVisibility)
}, },
) )
} }
@ -241,7 +241,7 @@ private fun RoomAddressSection(
homeserverName: String, homeserverName: String,
isVisibleInRoomDirectory: AsyncData<Boolean>, isVisibleInRoomDirectory: AsyncData<Boolean>,
onRoomAddressClick: () -> Unit, onRoomAddressClick: () -> Unit,
onVisibilityChange: (Boolean) -> Unit, onVisibilityChange: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
SecurityAndPrivacySection( SecurityAndPrivacySection(
@ -263,6 +263,7 @@ private fun RoomAddressSection(
supportingContent = { supportingContent = {
Text(text = stringResource(R.string.screen_security_and_privacy_room_directory_visibility_section_footer, homeserverName)) Text(text = stringResource(R.string.screen_security_and_privacy_room_directory_visibility_section_footer, homeserverName))
}, },
onClick = if (isVisibleInRoomDirectory.isSuccess()) onVisibilityChange else null,
trailingContent = trailingContent =
when (isVisibleInRoomDirectory) { when (isVisibleInRoomDirectory) {
is AsyncData.Uninitialized, is AsyncData.Loading -> { is AsyncData.Uninitialized, is AsyncData.Loading -> {
@ -284,7 +285,7 @@ private fun RoomAddressSection(
is AsyncData.Success -> { is AsyncData.Success -> {
ListItemContent.Switch( ListItemContent.Switch(
checked = isVisibleInRoomDirectory.data, checked = isVisibleInRoomDirectory.data,
onChange = onVisibilityChange, onChange = { onVisibilityChange() },
) )
} }
} }