fix: only trim blank lines in posts, not profile bios

The newline trimming before URLs was stripping line breaks from
profile bios, smushing text and links together. Add trimBlankLines
parameter to parseContent, disabled when plainLinks is true (which
indicates profile/bio rendering).
This commit is contained in:
The Daniel
2026-04-05 12:19:03 -04:00
parent efe0bc977f
commit 229264f471
@@ -253,7 +253,7 @@ private fun isStandaloneUrl(content: String, matchRange: IntRange): Boolean {
return true
}
internal fun parseContent(content: String, emojiMap: Map<String, String> = emptyMap(), imetaMap: Map<String, String> = emptyMap()): List<ContentSegment> {
internal fun parseContent(content: String, emojiMap: Map<String, String> = emptyMap(), imetaMap: Map<String, String> = emptyMap(), trimBlankLines: Boolean = true): List<ContentSegment> {
val segments = mutableListOf<ContentSegment>()
var lastEnd = 0
@@ -356,7 +356,7 @@ internal fun parseContent(content: String, emojiMap: Map<String, String> = empty
// Final pass: trim trailing blank lines from text segments that precede
// block-level segments (links, images, embeds, etc.) to avoid extra vertical space
for (i in 0 until finalResult.size - 1) {
if (trimBlankLines) for (i in 0 until finalResult.size - 1) {
val segment = finalResult[i]
val next = finalResult[i + 1]
if (segment is ContentSegment.TextSegment && next !is ContentSegment.TextSegment && next !is ContentSegment.InlineLinkSegment && next !is ContentSegment.CustomEmojiSegment) {
@@ -576,7 +576,7 @@ fun RichContent(
noteActions: NoteActions? = null,
modifier: Modifier = Modifier
) {
val segments = remember(content, emojiMap, imetaMap) { parseContent(content.trimEnd('\n', '\r'), emojiMap, imetaMap) }
val segments = remember(content, emojiMap, imetaMap, plainLinks) { parseContent(content.trimEnd('\n', '\r'), emojiMap, imetaMap, trimBlankLines = !plainLinks) }
val profileVer = eventRepo?.profileVersion?.collectAsState()?.value ?: 0
var fullScreenImageUrl by remember { mutableStateOf<String?>(null) }
var fullScreenVideoUrl by remember { mutableStateOf<String?>(null) }