refactor: utilisation des types de cache dans tous les services
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user