Skip to content

Commit 2a6e33a

Browse files
committed
fix(images): silence 404 on image fetching
1 parent d4a6793 commit 2a6e33a

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

src/components/common/navbar/NavbarSettingsDopdown.vue

+3-1
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ const placement = computed(() => {
183183
</template>
184184

185185
<style lang="scss">
186+
@use '~/styles/layout' as layout;
187+
186188
.settings-dropdown {
187189
min-width: max(calc(100vw / var(--tab-count)), 8rem);
188190
max-width: 20rem;
@@ -191,7 +193,7 @@ const placement = computed(() => {
191193
text-align: left;
192194
193195
&.floating {
194-
min-width: max(calc(var(--max-header-width) / var(--tab-count)), 8rem);
196+
min-width: max(calc(#{layout.$floating-navbar-width} / var(--tab-count)), 8rem);
195197
margin-right: 0;
196198
}
197199

src/components/common/poster/PosterComponent.vue

+7-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { computed, onBeforeUnmount, type PropType, ref, toRefs, watch } from 'vu
66
import type { PosterItem } from '~/models/poster.model';
77
88
import PosterPlaceholder from '~/assets/images/poster-placholder.webp';
9+
import { Logger } from '~/services/logger.service';
910
import { useImageStore } from '~/stores/data/image.store';
1011
1112
const props = defineProps({
@@ -58,7 +59,7 @@ const timeout = ref();
5859
5960
const { getImageUrl } = useImageStore();
6061
61-
const getPosters = (_item: PosterItem) => {
62+
const getPosters = async (_item: PosterItem) => {
6263
if (poster?.value) return;
6364
if (_item.poster) return;
6465
@@ -74,7 +75,11 @@ const getPosters = (_item: PosterItem) => {
7475
if (imgLoaded.value) return;
7576
transition.value = true;
7677
}, 100);
77-
getImageUrl(query, size.value, _item.posterRef ?? localPoster);
78+
try {
79+
await getImageUrl(query, size.value, _item.posterRef ?? localPoster);
80+
} catch (error) {
81+
Logger.error('Failed to fetch poster', error);
82+
}
7883
};
7984
8085
watch(item, getPosters, { immediate: true, flush: 'post' });

src/stores/data/image.store.ts

+4
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ export const useImageStore = defineStore(ImageStoreConstants.Store, () => {
149149
delete imageErrors[type]?.[key];
150150
return response;
151151
} catch (error) {
152+
if (error instanceof Response && error.status === 404) {
153+
Logger.warn('No image found', { key, type });
154+
return {};
155+
}
152156
Logger.error('Failed to queue image request', { key, type });
153157
if (!imageErrors[type]) imageErrors[type] = {};
154158
imageErrors[type]![key] = ErrorCount.fromDictionary(imageErrors[type]!, key, error);

0 commit comments

Comments
 (0)