import { computed } from 'vue'; import { useMangaChapters } from './useMangaChapters'; // Importe le composable des chapitres export function useMangaVolumes(mangaId) { // Utilise le composable des chapitres pour récupérer les données brutes et les états const { data: rawChaptersData, isLoading, isFetching, error, status } = useMangaChapters(mangaId); // Calcule les volumes à partir des données des chapitres const volumes = computed(() => { const chaptersArray = rawChaptersData.value || []; // Utilise la data retournée par useMangaChapters if (chaptersArray.length === 0) return []; const volumeMap = new Map(); chaptersArray.forEach(chapter => { const volumeNumber = chapter.volume || 'Unknown'; if (!volumeMap.has(volumeNumber)) { volumeMap.set(volumeNumber, { number: volumeNumber, downloadedChapter: 0, totalChapter: 0, chapters: [] }); } const volumeEntry = volumeMap.get(volumeNumber); volumeEntry.chapters.push({ ...chapter, isAvailable: Boolean(chapter.isAvailable) }); volumeEntry.totalChapter++; if (chapter.isAvailable) { volumeEntry.downloadedChapter++; } }); return Array.from(volumeMap.values()).sort((a, b) => { const numA = a.number === 'Unknown' ? -Infinity : Number(a.number); const numB = b.number === 'Unknown' ? -Infinity : Number(b.number); return numB - numA; }); }); // Retourne les volumes calculés et propage les états pertinents de useMangaChapters return { volumes, // Les données transformées isLoading, // L'état de chargement initial des chapitres isFetching, // L'état de rafraîchissement des chapitres error, // L'erreur potentielle lors du fetch des chapitres status // L'état global ('pending', 'error', 'success') // On pourrait aussi retourner rawChaptersData si nécessaire ailleurs }; }