diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2024-11-15 01:18:41 -0500 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2024-11-15 01:18:41 -0500 |
| commit | 122ecb5769e20173c99033ade0057d38e12cb384 (patch) | |
| tree | 9013d9639c92df1245cb15c583a4f6c000f3ad59 /ui/lib/store | |
| parent | 2fb328089f01776e5bb553a1d50a061396588c8c (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.js | 6 |
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 // |
