summaryrefslogtreecommitdiff
path: root/ui/lib/store
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-11-15 01:18:41 -0500
committerOwen Jacobson <owen@grimoire.ca>2024-11-15 01:18:41 -0500
commit122ecb5769e20173c99033ade0057d38e12cb384 (patch)
tree9013d9639c92df1245cb15c583a4f6c000f3ad59 /ui/lib/store
parent2fb328089f01776e5bb553a1d50a061396588c8c (diff)
HTML-ify message bodies once, on receipt, and not every time the message is rendered.
~16% of the `hi development` channel's rendering time was taken up on this.
Diffstat (limited to 'ui/lib/store')
-rw-r--r--ui/lib/store/messages.svelte.js6
1 files changed, 5 insertions, 1 deletions
diff --git a/ui/lib/store/messages.svelte.js b/ui/lib/store/messages.svelte.js
index c0db71b..0ceba54 100644
--- a/ui/lib/store/messages.svelte.js
+++ b/ui/lib/store/messages.svelte.js
@@ -1,3 +1,6 @@
+import { marked } from 'marked';
+import DOMPurify from 'dompurify';
+
const RUN_COALESCE_MAX_INTERVAL = 10 /* min */ * 60 /* sec */ * 1000; /* ms */
export class Messages {
@@ -9,7 +12,8 @@ export class Messages {
addMessage(channel, id, { at, sender, body }) {
let parsedAt = new Date(at);
- const message = { id, at: parsedAt, body };
+ let renderedBody = DOMPurify.sanitize(marked.parse(body, { breaks: true }));
+ const message = { id, at: parsedAt, body, renderedBody };
// You might be thinking, can't this be
//