From ff087e3dea090e00d49ce0a119f112b74a56890b Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 5 Feb 2023 18:12:11 -0500 Subject: [PATCH] Correctly addressing Preview of images when posts have been reported. --- .../amethyst/ui/components/RichTextViewer.kt | 42 +++++++++---------- .../ui/note/ChatroomMessageCompose.kt | 8 +++- .../amethyst/ui/note/NoteCompose.kt | 6 ++- .../amethyst/ui/screen/ThreadFeedView.kt | 7 +++- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt index 1ae76a907..533cf0dd8 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/RichTextViewer.kt @@ -64,7 +64,7 @@ fun isValidURL(url: String?): Boolean { } @Composable -fun RichTextViewer(content: String, blockPreview: Boolean, tags: List>?, navController: NavController) { +fun RichTextViewer(content: String, canPreview: Boolean, tags: List>?, navController: NavController) { val translatedTextState = remember { mutableStateOf(ResultOrError(content, null, null, null)) } @@ -88,26 +88,7 @@ fun RichTextViewer(content: String, blockPreview: Boolean, tags: List - if (blockPreview) { - if (isValidURL(word)) { - ClickableUrl("$word ", word) - } else if (Patterns.EMAIL_ADDRESS.matcher(word).matches()) { - ClickableEmail(word) - } else if (Patterns.PHONE.matcher(word).matches() && word.length > 6) { - ClickablePhone(word) - } else if (noProtocolUrlValidator.matcher(word).matches()) { - ClickableUrl("https://$word", word) - } else if (tagIndex.matcher(word).matches() && tags != null) { - TagLink(word, tags, navController) - } else if (isBechLink(word)) { - BechLink(word, navController) - } else { - Text( - text = "$word ", - style = LocalTextStyle.current.copy(textDirection = TextDirection.Content), - ) - } - } else { + if (canPreview) { // Explicit URL val lnInvoice = LnInvoiceUtil.findInvoice(word) if (lnInvoice != null) { @@ -137,6 +118,25 @@ fun RichTextViewer(content: String, blockPreview: Boolean, tags: List 6) { + ClickablePhone(word) + } else if (noProtocolUrlValidator.matcher(word).matches()) { + ClickableUrl("https://$word", word) + } else if (tagIndex.matcher(word).matches() && tags != null) { + TagLink(word, tags, navController) + } else if (isBechLink(word)) { + BechLink(word, navController) + } else { + Text( + text = "$word ", + style = LocalTextStyle.current.copy(textDirection = TextDirection.Content), + ) + } } } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt index 8c393371f..827e45860 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/ChatroomMessageCompose.kt @@ -203,17 +203,21 @@ fun ChatroomMessageCompose(baseNote: Note, routeForLastRead: String?, innerQuote } else { val eventContent = accountViewModel.decrypt(note) + val canPreview = note.author == accountUser + || (note.author?.let { accountUser.isFollowing(it) } ?: true ) + || !noteForReports.hasAnyReports() + if (eventContent != null) { RichTextViewer( eventContent, - noteForReports.hasAnyReports(), + canPreview, note.event?.tags, navController ) } else { RichTextViewer( "Could Not decrypt the message", - false, + true, note.event?.tags, navController ) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 4a9d702eb..aba6f0d73 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -246,8 +246,12 @@ fun NoteCompose( } } else { val eventContent = note.event?.content + val canPreview = note.author == account.userProfile() + || (note.author?.let { account.userProfile().isFollowing(it) } ?: true ) + || !noteForReports.hasAnyReports() + if (eventContent != null) { - RichTextViewer(eventContent, noteForReports.hasAnyReports(), note.event?.tags, navController) + RichTextViewer(eventContent, canPreview, note.event?.tags, navController) } ReactionsRow(note, accountViewModel) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt index 8f83c6a8b..8ef50d9b5 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/ThreadFeedView.kt @@ -220,8 +220,13 @@ fun NoteMaster(baseNote: Note, accountViewModel: AccountViewModel, navController Row(modifier = Modifier.padding(horizontal = 12.dp)) { Column() { val eventContent = note.event?.content + + val canPreview = note.author == account.userProfile() + || (note.author?.let { account.userProfile().isFollowing(it) } ?: true ) + || !noteForReports.hasAnyReports() + if (eventContent != null) { - RichTextViewer(eventContent, noteForReports.hasAnyReports(), note.event?.tags, navController) + RichTextViewer(eventContent, canPreview, note.event?.tags, navController) } ReactionsRow(note, accountViewModel)