multiplatform: fix handling HTML in some places (#2963)

This commit is contained in:
Stanislav Dmitrenko 2023-08-21 22:14:23 +03:00 committed by GitHub
parent 538cdd16de
commit 788ee15942
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 22 additions and 15 deletions

View File

@ -24,6 +24,7 @@ import androidx.compose.ui.text.*
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.* import androidx.compose.ui.text.input.*
import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.desktop.ui.tooling.preview.Preview
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.unit.* import androidx.compose.ui.unit.*
import chat.simplex.common.model.* import chat.simplex.common.model.*
import chat.simplex.common.ui.theme.* import chat.simplex.common.ui.theme.*
@ -224,14 +225,14 @@ fun DatabaseEncryptionLayout(
if (initialRandomDBPassphrase.value) { if (initialRandomDBPassphrase.value) {
SectionTextFooter(generalGetString(MR.strings.encrypted_with_random_passphrase)) SectionTextFooter(generalGetString(MR.strings.encrypted_with_random_passphrase))
} else { } else {
SectionTextFooter(generalGetString(MR.strings.impossible_to_recover_passphrase)) SectionTextFooter(annotatedStringResource(MR.strings.impossible_to_recover_passphrase))
} }
} else { } else {
SectionTextFooter(generalGetString(MR.strings.keychain_allows_to_receive_ntfs)) SectionTextFooter(generalGetString(MR.strings.keychain_allows_to_receive_ntfs))
} }
} else { } else {
SectionTextFooter(generalGetString(MR.strings.you_have_to_enter_passphrase_every_time)) 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() SectionBottomSpacer()

View File

@ -10,6 +10,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.* import androidx.compose.ui.focus.*
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.* import androidx.compose.ui.unit.*
@ -215,7 +216,7 @@ private fun alertText(text: String?): (@Composable () -> Unit)? {
} else { } else {
({ ({
Text( Text(
text, escapedHtmlToAnnotatedString(text, LocalDensity.current),
Modifier.fillMaxWidth(), Modifier.fillMaxWidth(),
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
fontSize = 16.sp, fontSize = 16.sp,

View File

@ -1,5 +1,7 @@
package chat.simplex.common.views.helpers package chat.simplex.common.views.helpers
import androidx.compose.ui.text.AnnotatedString
interface ValueTitle <T> { interface ValueTitle <T> {
val value: T val value: T
val title: String val title: String
@ -8,5 +10,5 @@ interface ValueTitle <T> {
data class ValueTitleDesc <T> ( data class ValueTitleDesc <T> (
override val value: T, override val value: T,
override val title: String, override val title: String,
val description: String val description: AnnotatedString
): ValueTitle<T> ): ValueTitle<T>

View File

@ -21,6 +21,7 @@ import androidx.compose.ui.text.*
import androidx.compose.ui.text.font.* import androidx.compose.ui.text.font.*
import androidx.compose.ui.text.input.* import androidx.compose.ui.text.input.*
import androidx.compose.desktop.ui.tooling.preview.Preview 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.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import chat.simplex.common.model.* import chat.simplex.common.model.*
@ -337,9 +338,9 @@ private fun UseOnionHosts(
val values = remember { val values = remember {
OnionHosts.values().map { OnionHosts.values().map {
when (it) { 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.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), generalGetString(MR.strings.network_use_onion_hosts_prefer_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), generalGetString(MR.strings.network_use_onion_hosts_required_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), showModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit),
updateSessionMode: (TransportSessionMode) -> Unit, updateSessionMode: (TransportSessionMode) -> Unit,
) { ) {
val density = LocalDensity.current
val values = remember { val values = remember {
TransportSessionMode.values().map { TransportSessionMode.values().map {
when (it) { when (it) {
TransportSessionMode.User -> ValueTitleDesc(TransportSessionMode.User, generalGetString(MR.strings.network_session_mode_user), generalGetString(MR.strings.network_session_mode_user_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), generalGetString(MR.strings.network_session_mode_entity_description)) TransportSessionMode.Entity -> ValueTitleDesc(TransportSessionMode.Entity, generalGetString(MR.strings.network_session_mode_entity), escapedHtmlToAnnotatedString(generalGetString(MR.strings.network_session_mode_entity_description), density))
} }
} }
} }

View File

@ -9,6 +9,7 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material.* import androidx.compose.material.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.AnnotatedString
import dev.icerock.moko.resources.compose.stringResource import dev.icerock.moko.resources.compose.stringResource
import androidx.compose.ui.text.capitalize import androidx.compose.ui.text.capitalize
import androidx.compose.ui.text.intl.Locale import androidx.compose.ui.text.intl.Locale
@ -118,21 +119,21 @@ private fun notificationModes(): List<ValueTitleDesc<NotificationsMode>> {
ValueTitleDesc( ValueTitleDesc(
NotificationsMode.OFF, NotificationsMode.OFF,
generalGetString(MR.strings.notifications_mode_off), generalGetString(MR.strings.notifications_mode_off),
generalGetString(MR.strings.notifications_mode_off_desc), AnnotatedString(generalGetString(MR.strings.notifications_mode_off_desc)),
) )
) )
res.add( res.add(
ValueTitleDesc( ValueTitleDesc(
NotificationsMode.PERIODIC, NotificationsMode.PERIODIC,
generalGetString(MR.strings.notifications_mode_periodic), generalGetString(MR.strings.notifications_mode_periodic),
generalGetString(MR.strings.notifications_mode_periodic_desc), AnnotatedString(generalGetString(MR.strings.notifications_mode_periodic_desc)),
) )
) )
res.add( res.add(
ValueTitleDesc( ValueTitleDesc(
NotificationsMode.SERVICE, NotificationsMode.SERVICE,
generalGetString(MR.strings.notifications_mode_service), generalGetString(MR.strings.notifications_mode_service),
generalGetString(MR.strings.notifications_mode_service_desc), AnnotatedString(generalGetString(MR.strings.notifications_mode_service_desc)),
) )
) )
return res return res
@ -145,21 +146,21 @@ fun notificationPreviewModes(): List<ValueTitleDesc<NotificationPreviewMode>> {
ValueTitleDesc( ValueTitleDesc(
NotificationPreviewMode.MESSAGE, NotificationPreviewMode.MESSAGE,
generalGetString(MR.strings.notification_preview_mode_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( res.add(
ValueTitleDesc( ValueTitleDesc(
NotificationPreviewMode.CONTACT, NotificationPreviewMode.CONTACT,
generalGetString(MR.strings.notification_preview_mode_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( res.add(
ValueTitleDesc( ValueTitleDesc(
NotificationPreviewMode.HIDDEN, NotificationPreviewMode.HIDDEN,
generalGetString(MR.strings.notification_preview_mode_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 return res