feat: ajout de la fonctionnalité de suppression de mangas, incluant une modale de confirmation pour l'utilisateur, la gestion des erreurs et l'intégration avec l'API pour supprimer les mangas et leurs chapitres associés. Mise à jour des composants Vue et ajout de tests pour valider cette nouvelle fonctionnalité.

This commit is contained in:
ext.jeremy.guillot@maxicoffee.domains
2025-07-23 16:42:54 +02:00
parent 7f9d583c94
commit f09f744a9b
12 changed files with 470 additions and 13 deletions

View File

@@ -0,0 +1,49 @@
import { useMutation, useQueryClient } from '@tanstack/vue-query';
import { ref } from 'vue';
import { ApiMangaRepository } from '../../infrastructure/api/apiMangaRepository';
export function useMangaDelete() {
const mangaRepository = new ApiMangaRepository();
const queryClient = useQueryClient();
const isDeleteModalOpen = ref(false);
const deleteMutation = useMutation({
mutationFn: ({ mangaId }) => {
return mangaRepository.deleteManga(mangaId);
},
onSuccess: (data, variables) => {
// Invalider et refetch les listes de mangas
queryClient.invalidateQueries({ queryKey: ['mangas'] });
queryClient.invalidateQueries({ queryKey: ['manga-search'] });
}
});
const openDeleteModal = () => {
isDeleteModalOpen.value = true;
};
const closeDeleteModal = () => {
isDeleteModalOpen.value = false;
};
const deleteManga = async (mangaId) => {
try {
await deleteMutation.mutateAsync({ mangaId });
closeDeleteModal();
return true;
} catch (error) {
console.error('Erreur lors de la suppression du manga:', error);
throw error;
}
};
return {
isDeleteModalOpen,
openDeleteModal,
closeDeleteModal,
deleteManga,
isLoading: deleteMutation.isPending,
error: deleteMutation.error,
isSuccess: deleteMutation.isSuccess
};
}