diff options
| author | Adam Soltys <[email protected]> | 2026-03-06 23:46:17 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-03-06 23:46:17 -0800 |
| commit | 797d30c172fbec5e98e3a8d77d24f8e708aaa0bd (patch) | |
| tree | 0413da05c2ff55e5c50ec83c092eb40de1eaa319 /src/components | |
| parent | 76e0e08ce6575b43901b777ee75b048dce9097ff (diff) | |
| download | coinos-ui-797d30c172fbec5e98e3a8d77d24f8e708aaa0bd.tar.gz coinos-ui-797d30c172fbec5e98e3a8d77d24f8e708aaa0bd.zip | |
render images from MLS messages by preserving rumor tags
Extract tags from decrypted MLS rumors and pass them through to
ChatMessage. Handle imeta tags (NIP-92) for image attachments
sent from clients like White Noise.
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/ChatMessage.svelte | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/components/ChatMessage.svelte b/src/components/ChatMessage.svelte index 7283430f..dbdde5a0 100644 --- a/src/components/ChatMessage.svelte +++ b/src/components/ChatMessage.svelte @@ -3,7 +3,15 @@ let { content, tags = [] }: { content: string; tags?: any[] } = $props(); - let parts = $derived(parseContent({ content, tags })); + // Extract image URLs from imeta tags not already in content + let imetaUrls = $derived( + tags + .filter((t) => t[0] === "imeta") + .map((t) => t.find((v) => v.startsWith("url "))?.slice(4)) + .filter((url): url is string => !!url && !content.includes(url)), + ); + + let parts = $derived(parseContent({ content: [content, ...imetaUrls].join("\n"), tags })); const truncUrl = (url: string) => { const short = url.replace(/^https?:\/\/(www\.)?/, ""); |
