From f3bcc68104f5acd92b35378aa732808fe90f6b93 Mon Sep 17 00:00:00 2001 From: MasutaYunikon Date: Fri, 13 Mar 2026 00:25:24 +0100 Subject: [PATCH] feat: cache images --- src/stores/series.ts | 9 +++++++++ src/views/CatalogView.vue | 18 ++---------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/stores/series.ts b/src/stores/series.ts index 4542664..93dcf0e 100644 --- a/src/stores/series.ts +++ b/src/stores/series.ts @@ -61,6 +61,8 @@ export const useSeriesStore = defineStore('series', () => { const loadingDetail = ref(false) const error = ref(null) + const _imageCache = new Set() + async function fetchSeries() { loadingSeries.value = true error.value = null @@ -69,6 +71,13 @@ export const useSeriesStore = defineStore('series', () => { if (!res.ok) throw new Error(`Erreur ${res.status}`) const data = await res.json() series.value = data.series + // Précache des posters en arrière-plan + for (const s of data.series as Serie[]) { + if (s.poster_image && !_imageCache.has(s.poster_image)) { + _imageCache.add(s.poster_image) + new Image().src = s.poster_image + } + } } catch (err) { error.value = err instanceof Error ? err.message : 'Erreur inconnue' } finally { diff --git a/src/views/CatalogView.vue b/src/views/CatalogView.vue index 4a096db..dbbc4be 100644 --- a/src/views/CatalogView.vue +++ b/src/views/CatalogView.vue @@ -276,23 +276,10 @@ async function fetchOrganizeNotifs() { } // ── Cache images ─────────────────────────────────────────────── -const imageCache = new Set() - -function precacheImages(series: any[]) { - for (const s of series) { - if (s.poster_image && !imageCache.has(s.poster_image)) { - imageCache.add(s.poster_image) - const img = new Image() - img.src = s.poster_image - } - } -} +// Géré directement dans le store series.ts onMounted(async () => { - if (store.series.length === 0) { - await store.fetchSeries() - precacheImages(store.series) - } + if (store.series.length === 0) await store.fetchSeries() fetchActiveDownloads() fetchOrganizeNotifs() dlInterval = setInterval(() => { @@ -304,7 +291,6 @@ onMounted(async () => { // Refresh au retour sur le catalogue (après update ou scan) onActivated(async () => { await store.fetchSeries() - precacheImages(store.series) fetchActiveDownloads() })