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/components | |
| 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/components')
| -rw-r--r-- | ui/lib/components/Message.svelte | 6 | ||||
| -rw-r--r-- | ui/lib/components/MessageRun.svelte | 4 |
2 files changed, 3 insertions, 7 deletions
diff --git a/ui/lib/components/Message.svelte b/ui/lib/components/Message.svelte index 0c8eeec..fddeecd 100644 --- a/ui/lib/components/Message.svelte +++ b/ui/lib/components/Message.svelte @@ -1,15 +1,11 @@ <script> - import { marked } from 'marked'; - import DOMPurify from 'dompurify'; - import { deleteMessage } from '$lib/apiServer'; function scroll(message) { message.scrollIntoView(); } - let { id, at, body, editable = false } = $props(); - let renderedBody = $derived(DOMPurify.sanitize(marked.parse(body, { breaks: true }))); + let { id, at, body, renderedBody, editable = false } = $props(); let deleteArmed = $state(false); function onDelete(event) { diff --git a/ui/lib/components/MessageRun.svelte b/ui/lib/components/MessageRun.svelte index 83a82a9..39ee155 100644 --- a/ui/lib/components/MessageRun.svelte +++ b/ui/lib/components/MessageRun.svelte @@ -16,7 +16,7 @@ <span class="chip variant-soft sticky top-o left-0"> @{name}: </span> - {#each messages as { id, at, body }} - <Message {id} {at} {body} editable={ownMessage} /> + {#each messages as { id, at, body, renderedBody }} + <Message {id} {at} {body} {renderedBody} editable={ownMessage} /> {/each} </div> |
