feat: intégration de @tanstack/vue-query pour la gestion des requêtes dans l'application Vue, ajout de nouveaux composables pour les chapitres et les détails des mangas, et mise à jour du store pour une meilleure gestion des états de chargement et d'erreur

This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2025-03-30 16:58:05 +02:00
parent fd2d3cd640
commit 71242433e6
10 changed files with 355 additions and 169 deletions

View File

@@ -0,0 +1,23 @@
import { computed } from 'vue';
import { useQuery } from '@tanstack/vue-query';
import { ApiMangaRepository } from '../../infrastructure/api/apiMangaRepository';
export function useMangaChapters(mangaId) {
const mangaRepository = new ApiMangaRepository();
const query = useQuery({
queryKey: ['manga', mangaId, 'chapters'],
queryFn: async () => {
if (!mangaId.value) {
return Promise.resolve([]); // Retourne un tableau vide si pas d'ID
}
const response = await mangaRepository.getChapters(mangaId.value);
// Assure de toujours retourner un tableau
return Array.isArray(response) ? response : response?.items ?? [];
},
enabled: computed(() => !!mangaId.value)
});
// Retourne le résultat de useQuery (contenant data, isLoading, etc.)
return query;
}