diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt index 2fc371c71b..d58d12b785 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainText.kt @@ -55,8 +55,15 @@ private class PlainTextNodeVisitor : NodeVisitor { private val builder = StringBuilder() override fun head(node: Node, depth: Int) { - if (node is TextNode && node.text().isNotBlank()) { - builder.append(node.text()) + if (node is TextNode) { + // If the text node is blank, only add a single whitespace char if there wasn't already one + if (node.text().isBlank()) { + if (builder.lastOrNull()?.isWhitespace() == false) { + builder.append(" ") + } + } else { + builder.append(node.text()) + } } else if (node is Element && node.tagName() == "li") { val index = node.elementSiblingIndex() + 1 val isOrdered = node.parent()?.nodeName()?.lowercase() == "ol" diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainTextTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainTextTest.kt index 5345113dc2..607f825401 100644 --- a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainTextTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/messages/ToPlainTextTest.kt @@ -45,7 +45,7 @@ class ToPlainTextTest { val formattedBody = FormattedBody( format = MessageFormat.HTML, body = """ - Hello world + Hello formatted world
  1. This is an ordered list.

@@ -53,7 +53,7 @@ class ToPlainTextTest { ) assertThat(formattedBody.toPlainText(permalinkParser = FakePermalinkParser())).isEqualTo( """ - Hello world + Hello formatted world • This is an unordered list. 1. This is an ordered list. """.trimIndent()