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 } console.log(`useMangaChapters: Chargement des chapitres pour le manga ${mangaId.value}`); const response = await mangaRepository.getChapters(mangaId.value); // Log pour déboguer console.log(`useMangaChapters: ${response.items?.length || 0} chapitres chargés`); // Assure de toujours retourner un tableau return Array.isArray(response) ? response : response?.items ?? []; }, // Refresh toutes les 30 secondes en arrière-plan refetchInterval: 30000, // S'assurer que si le composant est visible à nouveau, on récupère les données fraîches refetchOnWindowFocus: true, // Query activée uniquement si mangaId est défini enabled: computed(() => !!mangaId.value), // Options pour conserver les données entre les requêtes staleTime: 60000, // Considère les données comme "périmées" après 1 minute cacheTime: 5 * 60 * 1000 // Garde les données en cache pendant 5 minutes }); // Retourne le résultat de useQuery (contenant data, isLoading, etc.) return query; }