fix(service): image service with cache

This commit is contained in:
Julien Froidefond
2025-02-13 21:50:51 +01:00
parent 2e41fbc64c
commit d3e355b0e1

View File

@@ -11,27 +11,28 @@ export class ImageService extends BaseApiService {
const config = await this.getKomgaConfig(); const config = await this.getKomgaConfig();
const url = this.buildUrl(config, path); const url = this.buildUrl(config, path);
const headers = this.getAuthHeaders(config); const headers = this.getAuthHeaders(config);
// Ajout des headers pour accepter les images
headers.set("Accept", "image/jpeg, image/png, image/gif, image/webp, */*"); headers.set("Accept", "image/jpeg, image/png, image/gif, image/webp, */*");
const response = await fetch(url, { headers }); return this.fetchWithCache<ImageResponse>(
`image-${path}`,
async () => {
const response = await fetch(url, { headers });
if (!response.ok) { if (!response.ok) {
throw new Error(`Erreur HTTP: ${response.status} ${response.statusText}`); throw new Error(`Erreur HTTP: ${response.status} ${response.statusText}`);
} }
// Récupérer le type MIME de l'image const contentType = response.headers.get("content-type");
const contentType = response.headers.get("content-type"); const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
// Convertir la réponse en buffer return {
const arrayBuffer = await response.arrayBuffer(); buffer,
const buffer = Buffer.from(arrayBuffer); contentType,
};
return { },
buffer, "IMAGES"
contentType, );
};
} catch (error) { } catch (error) {
console.error("Erreur lors de la récupération de l'image:", error); console.error("Erreur lors de la récupération de l'image:", error);
return this.handleError(error, "Impossible de récupérer l'image"); return this.handleError(error, "Impossible de récupérer l'image");