refactor: utilisation des types de cache dans tous les services

This commit is contained in:
Julien Froidefond
2025-02-12 09:35:02 +01:00
parent d0324954a1
commit afcb22387e
5 changed files with 66 additions and 84 deletions

View File

@@ -17,64 +17,44 @@ export class HomeService extends BaseApiService {
return this.fetchWithCache<HomeData>(
"home",
async () => {
// Appels API parallèles
const [ongoingResponse, recentlyReadResponse, popularResponse] = await Promise.all([
// Séries en cours
fetch(
this.buildUrl(config, "series", {
read_status: "IN_PROGRESS",
sort: "readDate,desc",
page: "0",
size: "20",
media_status: "READY",
}),
{ headers }
),
// Derniers livres lus
fetch(
this.buildUrl(config, "books", {
read_status: "READ",
sort: "readDate,desc",
page: "0",
size: "20",
}),
{ headers }
),
// Séries populaires
fetch(
this.buildUrl(config, "series", {
page: "0",
size: "20",
sort: "metadata.titleSort,asc",
media_status: "READY",
}),
{ headers }
),
// Construction des URLs
const ongoingUrl = this.buildUrl(config, "series", {
read_status: "IN_PROGRESS",
sort: "readDate,desc",
page: "0",
size: "20",
media_status: "READY",
});
const recentlyReadUrl = this.buildUrl(config, "books", {
read_status: "READ",
sort: "readDate,desc",
page: "0",
size: "20",
media_status: "READY",
});
const popularUrl = this.buildUrl(config, "series", {
page: "0",
size: "20",
sort: "metadata.titleSort,asc",
media_status: "READY",
});
// Appels API parallèles avec fetchFromApi
const [ongoing, recentlyRead, popular] = await Promise.all([
this.fetchFromApi<LibraryResponse<KomgaSeries>>(ongoingUrl, headers),
this.fetchFromApi<LibraryResponse<KomgaBook>>(recentlyReadUrl, headers),
this.fetchFromApi<LibraryResponse<KomgaSeries>>(popularUrl, headers),
]);
// Vérifier les réponses
if (!ongoingResponse.ok || !recentlyReadResponse.ok || !popularResponse.ok) {
throw new Error("Erreur lors de la récupération des données");
}
// Récupérer les données
const [ongoing, recentlyRead, popular] = (await Promise.all([
ongoingResponse.json(),
recentlyReadResponse.json(),
popularResponse.json(),
])) as [
LibraryResponse<KomgaSeries>,
LibraryResponse<KomgaBook>,
LibraryResponse<KomgaSeries>
];
return {
ongoing: ongoing.content || [],
recentlyRead: recentlyRead.content || [],
popular: popular.content || [],
};
},
5 * 60 // Cache de 5 minutes
"HOME" // Type de cache
);
} catch (error) {
return this.handleError(error, "Impossible de récupérer les données de la page d'accueil");