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 bd3ffa1ea..97f90b808 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 @@ -497,7 +497,11 @@ private fun RenderContentAsMarkdown( ZoomableContentView( content = remember(destination, tags) { - RichTextParser().parseMediaUrl(destination, tags ?: EmptyTagList) ?: MediaUrlImage(url = destination) + RichTextParser().parseMediaUrl( + destination, + tags ?: EmptyTagList, + title.ifEmpty { null } ?: content, + ) ?: MediaUrlImage(url = destination, description = title.ifEmpty { null } ?: content) }, roundedCorner = true, accountViewModel = accountViewModel, 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 c4dc75fc9..ca4517c3e 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 @@ -3575,7 +3575,7 @@ fun FileHeaderDisplay( val blurHash = event.blurhash() val hash = event.hash() val dimensions = event.dimensions() - val description = event.alt() ?: event.content + val description = event.content.ifEmpty { null } ?: event.alt() val isImage = RichTextParser.isImageUrl(fullUrl) val uri = note.toNostrUri() @@ -3634,7 +3634,7 @@ fun VideoDisplay( val blurHash = event.blurhash() val hash = event.hash() val dimensions = event.dimensions() - val description = event.alt() ?: event.content + val description = event.content.ifBlank { null } ?: event.alt() val isImage = RichTextParser.isImageUrl(fullUrl) val uri = note.toNostrUri() diff --git a/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/RichTextParserBenchmark.kt b/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/RichTextParserBenchmark.kt index c3408f582..5bf80dafb 100644 --- a/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/RichTextParserBenchmark.kt +++ b/benchmark/src/androidTest/java/com/vitorpamplona/amethyst/benchmark/RichTextParserBenchmark.kt @@ -49,6 +49,7 @@ class RichTextParserBenchmark { RichTextParser().parseMediaUrl( "https://github.com/vitorpamplona/amethyst/releases/download/v0.83.10/amethyst-googleplay-universal-v0.83.10.apk", EmptyTagList, + null, ), ) } diff --git a/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt b/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt index bb205711b..dcd6b6eb4 100644 --- a/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt +++ b/commons/src/main/java/com/vitorpamplona/amethyst/commons/RichTextParser.kt @@ -45,6 +45,7 @@ class RichTextParser() { fun parseMediaUrl( fullUrl: String, eventTags: ImmutableListOfLists, + description: String?, ): MediaUrlContent? { val removedParamsFromUrl = removeQueryParamsForExtensionComparison(fullUrl) return if (imageExtensions.any { removedParamsFromUrl.endsWith(it) }) { @@ -53,7 +54,7 @@ class RichTextParser() { MediaUrlImage( url = fullUrl, - description = frags[FileHeaderEvent.ALT] ?: tags[FileHeaderEvent.ALT], + description = description ?: frags[FileHeaderEvent.ALT] ?: tags[FileHeaderEvent.ALT], hash = frags[FileHeaderEvent.HASH] ?: tags[FileHeaderEvent.HASH], blurhash = frags[FileHeaderEvent.BLUR_HASH] ?: tags[FileHeaderEvent.BLUR_HASH], dim = frags[FileHeaderEvent.DIMENSION] ?: tags[FileHeaderEvent.DIMENSION], @@ -64,7 +65,7 @@ class RichTextParser() { val tags = Nip92MediaAttachments().parse(fullUrl, eventTags.lists) MediaUrlVideo( url = fullUrl, - description = frags[FileHeaderEvent.ALT] ?: tags[FileHeaderEvent.ALT], + description = description ?: frags[FileHeaderEvent.ALT] ?: tags[FileHeaderEvent.ALT], hash = frags[FileHeaderEvent.HASH] ?: tags[FileHeaderEvent.HASH], blurhash = frags[FileHeaderEvent.BLUR_HASH] ?: tags[FileHeaderEvent.BLUR_HASH], dim = frags[FileHeaderEvent.DIMENSION] ?: tags[FileHeaderEvent.DIMENSION], @@ -106,7 +107,7 @@ class RichTextParser() { val urlSet = parseValidUrls(content) val imagesForPager = - urlSet.mapNotNull { fullUrl -> parseMediaUrl(fullUrl, tags) }.associateBy { it.url } + urlSet.mapNotNull { fullUrl -> parseMediaUrl(fullUrl, tags, content) }.associateBy { it.url } val imageList = imagesForPager.values.toList() val emojiMap = Nip30CustomEmoji.createEmojiMap(tags)