From d98b215c0ff99d94938c868ed439fd5c28a0b8a7 Mon Sep 17 00:00:00 2001 From: miruka Date: Sat, 17 Aug 2019 14:51:04 -0400 Subject: [PATCH] Fix plain text messages newlines being ignored --- TODO.md | 4 +++- src/python/matrix_client.py | 6 ++++-- src/python/utils.py | 5 +++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index fc60c505..8e24d355 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,7 @@ - Refactoring + - Make all icon SVG files white/black, since we can now use ColorOverlay + - Make the icon blue in EditAccount when hovering and no avatar set + - Use HInterfaceBox for EditAccount Profile and Encryption - HButton - Control: hovered, visualFocus, enaled @@ -91,7 +94,6 @@ - Spinner when loading account, past room events, images or clicking buttons - Show account page as loading until profile initially retrieved - Theming - - Make all icons white/black, since we can now use ColorOverlay - Don't create additional lines in theme conversion (braces) - Recursively merge default and user theme - Distribute fonts diff --git a/src/python/matrix_client.py b/src/python/matrix_client.py index 78201f0e..1959da29 100644 --- a/src/python/matrix_client.py +++ b/src/python/matrix_client.py @@ -510,7 +510,8 @@ class MatrixClient(nio.AsyncClient): async def onRoomMessageText(self, room, ev) -> None: co = HTML_FILTER.filter( ev.formatted_body - if ev.format == "org.matrix.custom.html" else html.escape(ev.body), + if ev.format == "org.matrix.custom.html" else + utils.plain2html(ev.body), ) await self.register_nio_event(room, ev, content=co) @@ -518,7 +519,8 @@ class MatrixClient(nio.AsyncClient): async def onRoomMessageEmote(self, room, ev) -> None: co = HTML_FILTER.filter_inline( ev.formatted_body - if ev.format == "org.matrix.custom.html" else html.escape(ev.body), + if ev.format == "org.matrix.custom.html" else + utils.plain2html(ev.body), ) await self.register_nio_event(room, ev, content=co) diff --git a/src/python/utils.py b/src/python/utils.py index dd1fc740..1222e1c4 100644 --- a/src/python/utils.py +++ b/src/python/utils.py @@ -1,4 +1,5 @@ import collections +import html import xml.etree.cElementTree as xml_etree # FIXME: bandit warning from enum import Enum from enum import auto as autostr @@ -39,3 +40,7 @@ def guess_mime(file: IO) -> Optional[str]: file.seek(0, 0) return filetype.guess_mime(file) + + +def plain2html(text: str) -> str: + return "
%s
" % html.escape(text)