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:
parent
fd2d3cd640
commit
71242433e6
@@ -0,0 +1,51 @@
|
||||
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
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user