diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index df07c25f66..cf6973e98e 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -690,7 +690,7 @@ {#each message.files.filter((f) => ['image', 'file'].includes(f.type)) as file}
{#if file.type === 'image' || (file?.content_type ?? '').startsWith('image/')} - {message.content} + {file.name {:else} {}; + /** Called when the image fails to load, e.g. its file has since been deleted. */ + export let onError: () => void = () => {}; + const i18n = getContext('i18n'); let _src = ''; $: _src = safeImageUrl(src.startsWith('/') ? `${WEBUI_BASE_URL}${src}` : src, allowExternal); let showImagePreview = false; + + let failed = false; + let attemptedSrc = ''; + $: if (_src !== attemptedSrc) { + attemptedSrc = _src; + failed = false; + } + + const handleError = () => { + failed = true; + showImagePreview = false; + onError(); + }; - +{#if !failed} + +{/if}
- + {#if failed} +
+ + {$i18n.t('Image unavailable')} +
+ {:else} + + {/if} {#if dismissible}
diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 1f15676d7f..8764964f6d 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -1406,6 +1406,7 @@ "Image Prompt Generation": "", "Image Prompt Generation Prompt": "", "Image Size": "", + "Image unavailable": "", "image/*, video/*": "", "Images": "", "Import": "",