diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseEncryptionView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseEncryptionView.kt index 137d7f6fd..37080ebd8 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseEncryptionView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseEncryptionView.kt @@ -24,6 +24,7 @@ import androidx.compose.ui.text.* import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.* import androidx.compose.desktop.ui.tooling.preview.Preview +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.* import chat.simplex.common.model.* import chat.simplex.common.ui.theme.* @@ -224,14 +225,14 @@ fun DatabaseEncryptionLayout( if (initialRandomDBPassphrase.value) { SectionTextFooter(generalGetString(MR.strings.encrypted_with_random_passphrase)) } else { - SectionTextFooter(generalGetString(MR.strings.impossible_to_recover_passphrase)) + SectionTextFooter(annotatedStringResource(MR.strings.impossible_to_recover_passphrase)) } } else { SectionTextFooter(generalGetString(MR.strings.keychain_allows_to_receive_ntfs)) } } else { SectionTextFooter(generalGetString(MR.strings.you_have_to_enter_passphrase_every_time)) - SectionTextFooter(generalGetString(MR.strings.impossible_to_recover_passphrase)) + SectionTextFooter(annotatedStringResource(MR.strings.impossible_to_recover_passphrase)) } } SectionBottomSpacer() diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AlertManager.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AlertManager.kt index f5fbd0150..d96b9d8a1 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AlertManager.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/AlertManager.kt @@ -10,6 +10,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.* import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.* @@ -215,7 +216,7 @@ private fun alertText(text: String?): (@Composable () -> Unit)? { } else { ({ Text( - text, + escapedHtmlToAnnotatedString(text, LocalDensity.current), Modifier.fillMaxWidth(), textAlign = TextAlign.Center, fontSize = 16.sp, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/DataClasses.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/DataClasses.kt index 351a7e9d4..5eba757a2 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/DataClasses.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/DataClasses.kt @@ -1,5 +1,7 @@ package chat.simplex.common.views.helpers +import androidx.compose.ui.text.AnnotatedString + interface ValueTitle { val value: T val title: String @@ -8,5 +10,5 @@ interface ValueTitle { data class ValueTitleDesc ( override val value: T, override val title: String, - val description: String + val description: AnnotatedString ): ValueTitle diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt index 344d002aa..447b65eff 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt @@ -21,6 +21,7 @@ import androidx.compose.ui.text.* import androidx.compose.ui.text.font.* import androidx.compose.ui.text.input.* import androidx.compose.desktop.ui.tooling.preview.Preview +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.common.model.* @@ -337,9 +338,9 @@ private fun UseOnionHosts( val values = remember { OnionHosts.values().map { when (it) { - OnionHosts.NEVER -> ValueTitleDesc(OnionHosts.NEVER, generalGetString(MR.strings.network_use_onion_hosts_no), generalGetString(MR.strings.network_use_onion_hosts_no_desc)) - OnionHosts.PREFER -> ValueTitleDesc(OnionHosts.PREFER, generalGetString(MR.strings.network_use_onion_hosts_prefer), generalGetString(MR.strings.network_use_onion_hosts_prefer_desc)) - OnionHosts.REQUIRED -> ValueTitleDesc(OnionHosts.REQUIRED, generalGetString(MR.strings.network_use_onion_hosts_required), generalGetString(MR.strings.network_use_onion_hosts_required_desc)) + OnionHosts.NEVER -> ValueTitleDesc(OnionHosts.NEVER, generalGetString(MR.strings.network_use_onion_hosts_no), AnnotatedString(generalGetString(MR.strings.network_use_onion_hosts_no_desc))) + OnionHosts.PREFER -> ValueTitleDesc(OnionHosts.PREFER, generalGetString(MR.strings.network_use_onion_hosts_prefer), AnnotatedString(generalGetString(MR.strings.network_use_onion_hosts_prefer_desc))) + OnionHosts.REQUIRED -> ValueTitleDesc(OnionHosts.REQUIRED, generalGetString(MR.strings.network_use_onion_hosts_required), AnnotatedString(generalGetString(MR.strings.network_use_onion_hosts_required_desc))) } } } @@ -368,11 +369,12 @@ private fun SessionModePicker( showModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit), updateSessionMode: (TransportSessionMode) -> Unit, ) { + val density = LocalDensity.current val values = remember { TransportSessionMode.values().map { when (it) { - TransportSessionMode.User -> ValueTitleDesc(TransportSessionMode.User, generalGetString(MR.strings.network_session_mode_user), generalGetString(MR.strings.network_session_mode_user_description)) - TransportSessionMode.Entity -> ValueTitleDesc(TransportSessionMode.Entity, generalGetString(MR.strings.network_session_mode_entity), generalGetString(MR.strings.network_session_mode_entity_description)) + TransportSessionMode.User -> ValueTitleDesc(TransportSessionMode.User, generalGetString(MR.strings.network_session_mode_user), escapedHtmlToAnnotatedString(generalGetString(MR.strings.network_session_mode_user_description), density)) + TransportSessionMode.Entity -> ValueTitleDesc(TransportSessionMode.Entity, generalGetString(MR.strings.network_session_mode_entity), escapedHtmlToAnnotatedString(generalGetString(MR.strings.network_session_mode_entity_description), density)) } } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NotificationsSettingsView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NotificationsSettingsView.kt index a3da6c6c9..ddd1b4068 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NotificationsSettingsView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NotificationsSettingsView.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Modifier +import androidx.compose.ui.text.AnnotatedString import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.intl.Locale @@ -118,21 +119,21 @@ private fun notificationModes(): List> { ValueTitleDesc( NotificationsMode.OFF, generalGetString(MR.strings.notifications_mode_off), - generalGetString(MR.strings.notifications_mode_off_desc), + AnnotatedString(generalGetString(MR.strings.notifications_mode_off_desc)), ) ) res.add( ValueTitleDesc( NotificationsMode.PERIODIC, generalGetString(MR.strings.notifications_mode_periodic), - generalGetString(MR.strings.notifications_mode_periodic_desc), + AnnotatedString(generalGetString(MR.strings.notifications_mode_periodic_desc)), ) ) res.add( ValueTitleDesc( NotificationsMode.SERVICE, generalGetString(MR.strings.notifications_mode_service), - generalGetString(MR.strings.notifications_mode_service_desc), + AnnotatedString(generalGetString(MR.strings.notifications_mode_service_desc)), ) ) return res @@ -145,21 +146,21 @@ fun notificationPreviewModes(): List> { ValueTitleDesc( NotificationPreviewMode.MESSAGE, generalGetString(MR.strings.notification_preview_mode_message), - generalGetString(MR.strings.notification_preview_mode_message_desc), + AnnotatedString(generalGetString(MR.strings.notification_preview_mode_message_desc)), ) ) res.add( ValueTitleDesc( NotificationPreviewMode.CONTACT, generalGetString(MR.strings.notification_preview_mode_contact), - generalGetString(MR.strings.notification_preview_mode_contact_desc), + AnnotatedString(generalGetString(MR.strings.notification_preview_mode_contact_desc)), ) ) res.add( ValueTitleDesc( NotificationPreviewMode.HIDDEN, generalGetString(MR.strings.notification_preview_mode_hidden), - generalGetString(MR.strings.notification_display_mode_hidden_desc), + AnnotatedString(generalGetString(MR.strings.notification_display_mode_hidden_desc)), ) ) return res