From 9f5ea4967673c3fd5031ae34a742b238e7c9a120 Mon Sep 17 00:00:00 2001 From: JRoberts <8711996+jr-simplex@users.noreply.github.com> Date: Fri, 13 May 2022 12:57:30 +0400 Subject: [PATCH] mobile: show markdown in quotes and context items; ios: fix markdown help (#649) --- .../simplex/app/views/chat/ContextItemView.kt | 21 ++++--------------- .../app/views/chat/item/FramedItemView.kt | 2 +- .../Views/Chat/ChatItem/FramedItemView.swift | 5 +++-- .../Views/Chat/ChatItem/MsgContentView.swift | 6 +++--- .../Chat/ComposeMessage/ContextItemView.swift | 15 ++++++------- .../en.xcloc/Localized Contents/en.xliff | 8 +++---- apps/ios/en.lproj/Localizable.strings | 12 +++++++++++ 7 files changed, 33 insertions(+), 36 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt index 2b969b1ee5..00e5ab894f 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/ContextItemView.kt @@ -11,8 +11,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.buildAnnotatedString -import androidx.compose.ui.text.withStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import chat.simplex.app.R @@ -52,7 +50,10 @@ fun ContextItemView( contentDescription = stringResource(R.string.icon_descr_context), tint = HighOrLowlight, ) - ContextItemText(contextItem) + MarkdownText( + contextItem.text, contextItem.formattedText, + sender = contextItem.memberDisplayName, senderBold = true, maxLines = 3 + ) } IconButton(onClick = cancelContextItem) { Icon( @@ -65,20 +66,6 @@ fun ContextItemView( } } -@Composable -private fun ContextItemText(cxtItem: ChatItem) { - val member = cxtItem.memberDisplayName - if (member == null) { - Text(cxtItem.text, maxLines = 3) - } else { - val annotatedText = buildAnnotatedString { - withStyle(boldFont) { append(member) } - append(": ${cxtItem.text}") - } - Text(annotatedText, maxLines = 3) - } -} - @Preview @Composable fun PreviewContextItemView() { diff --git a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt index bf59756968..2ebd299f92 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/views/chat/item/FramedItemView.kt @@ -50,7 +50,7 @@ fun FramedItemView( contentAlignment = Alignment.TopStart ) { MarkdownText( - qi.text, sender = qi.sender(user), senderBold = true, maxLines = 3, + qi.text, qi.formattedText, sender = qi.sender(user), senderBold = true, maxLines = 3, style = TextStyle(fontSize = 15.sp, color = MaterialTheme.colors.onSurface) ) } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift index 80aa7dd830..e720ab7416 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift @@ -139,7 +139,7 @@ struct FramedItemView: View { @ViewBuilder private func ciMsgContentView(_ ci: ChatItem, _ showMember: Bool = false) -> some View { let v = MsgContentView( - content: ci.content, + text: ci.text, formattedText: ci.formattedText, sender: showMember ? ci.memberDisplayName : nil, metaText: ci.timestampText, @@ -168,7 +168,8 @@ private struct MetaColorPreferenceKey: PreferenceKey { private func ciQuotedMsgView(_ qi: CIQuote) -> some View { MsgContentView( - content: qi, + text: qi.text, + formattedText: qi.formattedText, sender: qi.getSender(ChatModel.shared.currentUser) ) .lineLimit(3) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/MsgContentView.swift b/apps/ios/Shared/Views/Chat/ChatItem/MsgContentView.swift index 52b4d806f8..b0b9928c98 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/MsgContentView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/MsgContentView.swift @@ -12,14 +12,14 @@ private let uiLinkColor = UIColor(red: 0, green: 0.533, blue: 1, alpha: 1) private let linkColor = Color(uiColor: uiLinkColor) struct MsgContentView: View { - var content: ItemContent + var text: String var formattedText: [FormattedText]? = nil var sender: String? = nil var metaText: Text? = nil var edited = false var body: some View { - let v = messageText(content.text, formattedText, sender) + let v = messageText(text, formattedText, sender) if let mt = metaText { return v + reserveSpaceForMeta(mt, edited) } else { @@ -90,7 +90,7 @@ struct MsgContentView_Previews: PreviewProvider { static var previews: some View { let chatItem = ChatItem.getSample(1, .directSnd, .now, "hello") return MsgContentView( - content: chatItem.content, + text: chatItem.text, formattedText: chatItem.formattedText, sender: chatItem.memberDisplayName, metaText: chatItem.timestampText diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift index e59d7bfeef..c1245633c3 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift @@ -21,7 +21,12 @@ struct ContextItemView: View { .aspectRatio(contentMode: .fit) .frame(width: 16, height: 16) .foregroundColor(.secondary) - contextText(contextItem).lineLimit(3) + MsgContentView( + text: contextItem.text, + formattedText: contextItem.formattedText, + sender: contextItem.memberDisplayName + ) + .lineLimit(3) Spacer() Button { withAnimation { @@ -37,14 +42,6 @@ struct ContextItemView: View { .background(chatItemFrameColor(contextItem, colorScheme)) .padding(.top, 8) } - - func contextText(_ cxtItem: ChatItem) -> some View { - if let s = cxtItem.memberDisplayName { - return (Text(s).fontWeight(.medium) + Text(": \(cxtItem.text)")) - } else { - return Text(cxtItem.text) - } - } } struct ContextItemView_Previews: PreviewProvider { diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff index f4bd247669..06cf5fea4e 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -77,7 +77,7 @@ *bold* - *bold* + \*bold* No comment provided by engineer. @@ -1030,12 +1030,12 @@ SimpleX servers cannot see your profile. _italic_ - _italic_ + \_italic_ No comment provided by engineer. `a + b` - `a + b` + \`a + b` No comment provided by engineer. @@ -1201,7 +1201,7 @@ SimpleX servers cannot see your profile. ~strike~ - ~strike~ + \~strike~ No comment provided by engineer. diff --git a/apps/ios/en.lproj/Localizable.strings b/apps/ios/en.lproj/Localizable.strings index 7bbeebb05a..a87ccd3341 100644 --- a/apps/ios/en.lproj/Localizable.strings +++ b/apps/ios/en.lproj/Localizable.strings @@ -9,3 +9,15 @@ /* No comment provided by engineer. */ "**Add new contact**: to create your one-time QR Code for your contact." = "**Add new contact**: to create your one-time QR Code or link for your contact."; + +/* No comment provided by engineer. */ +"*bold*" = "\\*bold*"; + +/* No comment provided by engineer. */ +"_italic_" = "\\_italic_"; + +/* No comment provided by engineer. */ +"~strike~" = "\\~strike~"; + +/* No comment provided by engineer. */ +"`a + b`" = "\\`a + b`";