From 19a7f39855c367489c147425f7f6971b232da6b9 Mon Sep 17 00:00:00 2001 From: jlpereira Date: Thu, 7 Sep 2023 17:24:11 -0300 Subject: [PATCH] Add error message when loading images --- src/components/Gallery/GalleryMainImage.vue | 23 ++++++++++++++++-- .../ImageViewer/ImageViewer.global.vue | 24 +++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/components/Gallery/GalleryMainImage.vue b/src/components/Gallery/GalleryMainImage.vue index fb91b68..385a558 100644 --- a/src/components/Gallery/GalleryMainImage.vue +++ b/src/components/Gallery/GalleryMainImage.vue @@ -3,7 +3,12 @@ + props.image, (newVal) => { - if (newVal.id) { + if (newVal.original) { + errorMessage.value = null isLoading.value = true } } ) +function handleError(e) { + e.preventDefault() + + isLoading.value = false + errorMessage.value = 'Image was not found or format is not supported' +} + +function handleLoad() { + isLoading.value = false +} + onMounted(() => { - imageElement.value.addEventListener('load', () => (isLoading.value = false)) + imageElement.value.addEventListener('load', handleLoad) + imageElement.value.addEventListener('error', handleError) }) diff --git a/src/components/ImageViewer/ImageViewer.global.vue b/src/components/ImageViewer/ImageViewer.global.vue index 36a6528..b0f8eab 100644 --- a/src/components/ImageViewer/ImageViewer.global.vue +++ b/src/components/ImageViewer/ImageViewer.global.vue @@ -10,7 +10,13 @@ class="absolute rounded-t-lg w-auto max-h-full h-auto top-12 bottom-44 left-0 right-0 flex justify-center align-middle" > +
{ const imageElement = ref(null) const isLoading = ref(false) +const errorMessage = ref(null) const image = computed(() => props.images[props.index]) document.addEventListener('keyup', handleKeyboard) +function handleError() { + isLoading.value = false + errorMessage.value = 'Image was not found or format is not supported' +} + +function handleLoad() { + isLoading.value = false +} + onMounted(() => { - imageElement.value.addEventListener('load', () => (isLoading.value = false)) + imageElement.value.addEventListener('load', handleLoad) + imageElement.value.addEventListener('error', handleError) document.body.classList.add('overflow-hidden') }) @@ -141,6 +158,9 @@ onUnmounted(() => { watch( () => props.index, - () => (isLoading.value = true) + () => { + errorMessage.value = null + isLoading.value = true + } )