import { computed } from 'vue'; import { useQuery } from '@tanstack/vue-query'; import { ApiMangaRepository } from '../../infrastructure/api/apiMangaRepository'; // Accepte un ID de manga (peut être une ref, un computed ref, ou une valeur simple) export function useMangaDetails(mangaId) { const mangaRepository = new ApiMangaRepository(); // Assure que mangaId est une ref ou une computed pour la réactivité de la queryKey // Si ce n'est pas déjà le cas, mais généralement on passera une computed( () => route.params.id ) // const mangaIdRef = computed(() => unref(mangaId)); // unref est utile si on accepte des valeurs simples aussi const query = useQuery({ // La queryKey doit être réactive à mangaId queryKey: ['manga', mangaId], // mangaId est déjà une computed ref, donc c'est bon queryFn: () => { // Vérifier que l'ID a une valeur avant d'appeler l'API if (!mangaId.value) { // Retourner null ou undefined si pas d'ID, pour éviter un appel API invalide // TanStack Query gère aussi l'option 'enabled' pour cela return Promise.resolve(null); // ou throw new Error("ID manquant"); } return mangaRepository.getMangaById(mangaId.value); }, // Activer la requête seulement si mangaId a une valeur truthy enabled: computed(() => !!mangaId.value) }); // Retourne tous les états et données fournis par useQuery return query; }