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 ConfirmEnableEncryption: SecurityAndPrivacyEvents
data class ChangeHistoryVisibility(val historyVisibility: SecurityAndPrivacyHistoryVisibility) : SecurityAndPrivacyEvents
data class ChangeRoomVisibility(val isVisibleInRoomDirectory: Boolean) : SecurityAndPrivacyEvents
data object ToggleRoomVisibility : SecurityAndPrivacyEvents
data object DismissSaveError : SecurityAndPrivacyEvents
}

View File

@@ -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 -> {

View File

@@ -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<Boolean>,
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() },
)
}
}