From e5d59c3cd51589c520496402c757ae02cc836739 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 13 Jul 2018 12:27:25 +0200 Subject: [PATCH] Messages with code blocks show other HTML as plain text (#2280) --- CHANGES.rst | 1 + .../adapters/VectorMessagesAdapter.java | 23 +++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 99cee6a37d..3d9412277a 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -15,6 +15,7 @@ Bugfix: - Fix issue when selecting sound for notifications in the settings - Fix issue when changing device name in the settings (#2416) - Fix issue on verifying device, update the wording of the description message (#1067) + - Messages with code blocks show other HTML as plain text (#2280) Translations: - diff --git a/vector/src/main/java/im/vector/adapters/VectorMessagesAdapter.java b/vector/src/main/java/im/vector/adapters/VectorMessagesAdapter.java index 655b048433..657e74242e 100755 --- a/vector/src/main/java/im/vector/adapters/VectorMessagesAdapter.java +++ b/vector/src/main/java/im/vector/adapters/VectorMessagesAdapter.java @@ -1336,14 +1336,11 @@ private List populateRowTypeCode(final Message message, String minusTags = block .substring(VectorMessagesAdapterHelper.START_FENCED_BLOCK.length(), block.length() - VectorMessagesAdapterHelper.END_FENCED_BLOCK.length()) - .replace("\n", "
") - .replace(" ", " "); + .trim(); final View blockView = mLayoutInflater.inflate(R.layout.adapter_item_vector_message_code_block, null); final TextView tv = blockView.findViewById(R.id.messagesAdapter_body); - CharSequence sequence = mHelper.convertToHtml(minusTags); - - tv.setText(sequence); + tv.setText(minusTags); mHelper.highlightFencedCode(tv); @@ -1359,14 +1356,22 @@ private List populateRowTypeCode(final Message message, String block2 = block; if (TextUtils.equals(Message.FORMAT_MATRIX_HTML, message.format)) { - String sanitased = mHelper.getSanitisedHtml(block2); + // Preserve space and new lines + block2 = block2 + .trim() + .replace("\n", "
") + .replace(" ", " "); + + String sanitized = mHelper.getSanitisedHtml(block2); - if (sanitased != null) { - block2 = sanitased; + if (sanitized != null) { + block2 = sanitized; } } - CharSequence strBuilder = mHelper.highlightPattern(new SpannableString(block2), + CharSequence sequence = mHelper.convertToHtml(block2); + + CharSequence strBuilder = mHelper.highlightPattern(new SpannableString(sequence), mPattern, mBackgroundColorSpan, shouldHighlighted);