diff options
| author | Adam Malczewski <[email protected]> | 2026-10-21 04:21:57 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-10-21 04:21:57 +0900 |
| commit | a62a242133a369aed0eeb0d4058eb05312551946 (patch) | |
| tree | 78f6d788a9bbb77bd786f63a58a35f73b65ee9fa /src/features/chat/ui/ChatView.svelte | |
| parent | 550ade33285d1f39a909733e02a6b27211464df2 (diff) | |
| download | dispatch-web-a62a242133a369aed0eeb0d4058eb05312551946.tar.gz dispatch-web-a62a242133a369aed0eeb0d4058eb05312551946.zip | |
fix(review-7.2): show expired placeholders for missing chat images
Diffstat (limited to 'src/features/chat/ui/ChatView.svelte')
| -rw-r--r-- | src/features/chat/ui/ChatView.svelte | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/features/chat/ui/ChatView.svelte b/src/features/chat/ui/ChatView.svelte index f34de9a..b473766 100644 --- a/src/features/chat/ui/ChatView.svelte +++ b/src/features/chat/ui/ChatView.svelte @@ -78,6 +78,7 @@ // True while a show-earlier page-in is awaited (disables the button). let loadingEarlier = $state(false); + let failedImages = $state<string[]>([]); async function showEarlier() { if (!onShowEarlier || loadingEarlier) return; @@ -161,13 +162,22 @@ {#if rendered.chunk.type === "text"} <p>{rendered.chunk.text}</p> {:else if rendered.chunk.type === "image"} - <img - src={resolveImageUrl(rendered.chunk.url, apiBaseUrl)} - alt={rendered.chunk.mimeType ?? "pasted image"} - loading="lazy" - decoding="async" - class="max-h-80 max-w-full rounded" - /> + {#if failedImages.includes(rendered.chunk.url)} + <span class="text-sm opacity-70">image expired</span> + {:else} + <img + src={resolveImageUrl(rendered.chunk.url, apiBaseUrl)} + alt={rendered.chunk.mimeType ?? "pasted image"} + loading="lazy" + decoding="async" + onerror={() => { + if (rendered.chunk.type === "image" && rendered.chunk.url.startsWith("/images/")) { + failedImages = [...failedImages, rendered.chunk.url]; + } + }} + class="max-h-80 max-w-full rounded" + /> + {/if} {/if} </div> </div> |
