49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
import { useMutation, useQueryClient } from '@tanstack/vue-query';
|
|
import { ref } from 'vue';
|
|
import { ApiMangaRepository } from '../../infrastructure/api/apiMangaRepository';
|
|
|
|
export function useMangaEdit() {
|
|
const mangaRepository = new ApiMangaRepository();
|
|
const queryClient = useQueryClient();
|
|
const isEditModalOpen = ref(false);
|
|
|
|
const editMutation = useMutation({
|
|
mutationFn: ({ mangaId, updateData }) => {
|
|
return mangaRepository.editManga(mangaId, updateData);
|
|
},
|
|
onSuccess: (data, variables) => {
|
|
// Invalider et refetch les données du manga
|
|
queryClient.invalidateQueries({ queryKey: ['manga', variables.mangaId] });
|
|
queryClient.invalidateQueries({ queryKey: ['mangas'] });
|
|
}
|
|
});
|
|
|
|
const openEditModal = () => {
|
|
isEditModalOpen.value = true;
|
|
};
|
|
|
|
const closeEditModal = () => {
|
|
isEditModalOpen.value = false;
|
|
};
|
|
|
|
const editManga = async (mangaId, updateData) => {
|
|
try {
|
|
await editMutation.mutateAsync({ mangaId, updateData });
|
|
closeEditModal();
|
|
} catch (error) {
|
|
console.error('Erreur lors de l\'édition du manga:', error);
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
return {
|
|
isEditModalOpen,
|
|
openEditModal,
|
|
closeEditModal,
|
|
editManga,
|
|
isLoading: editMutation.isPending,
|
|
error: editMutation.error,
|
|
isSuccess: editMutation.isSuccess
|
|
};
|
|
}
|