From 122ecb5769e20173c99033ade0057d38e12cb384 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Fri, 15 Nov 2024 01:18:41 -0500 Subject: 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. --- ui/lib/store/messages.svelte.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'ui/lib/store/messages.svelte.js') 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 // -- cgit v1.2.3