feat: ajout de la gestion des sources préférées pour les mangas, incluant la récupération et la configuration des sources via l'API, ainsi que l'intégration d'une modale pour l'interface utilisateur.
This commit is contained in:
parent
15d92d1aff
commit
75f8e1686c
@@ -0,0 +1,52 @@
|
||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/vue-query';
|
||||
import { computed } from 'vue';
|
||||
import { ApiMangaRepository } from '../../infrastructure/api/apiMangaRepository';
|
||||
|
||||
export function useMangaPreferredSources(mangaId) {
|
||||
const mangaRepository = new ApiMangaRepository();
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
// Query pour récupérer les sources préférées
|
||||
const preferredSourcesQuery = useQuery({
|
||||
queryKey: ['manga', mangaId, 'preferred-sources'],
|
||||
queryFn: () => {
|
||||
if (!mangaId.value) {
|
||||
return Promise.resolve(null);
|
||||
}
|
||||
return mangaRepository.getPreferredSources(mangaId.value);
|
||||
},
|
||||
enabled: computed(() => !!mangaId.value)
|
||||
});
|
||||
|
||||
// Mutation pour sauvegarder les sources préférées
|
||||
const setPreferredSourcesMutation = useMutation({
|
||||
mutationFn: ({ sourceIds }) => {
|
||||
return mangaRepository.setPreferredSources(mangaId.value, sourceIds);
|
||||
},
|
||||
onSuccess: () => {
|
||||
// Invalider le cache pour refaire la requête de récupération
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: ['manga', mangaId.value, 'preferred-sources']
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
const sources = computed(() => preferredSourcesQuery.data.value?.sources || []);
|
||||
const hasPreferredSources = computed(() => preferredSourcesQuery.data.value?.hasPreferredSources || false);
|
||||
const isLoading = computed(() => preferredSourcesQuery.isLoading.value);
|
||||
const error = computed(() => preferredSourcesQuery.error.value);
|
||||
const isSaving = computed(() => setPreferredSourcesMutation.isPending.value);
|
||||
|
||||
const savePreferredSources = (sourceIds) => {
|
||||
return setPreferredSourcesMutation.mutate({ sourceIds });
|
||||
};
|
||||
|
||||
return {
|
||||
sources,
|
||||
hasPreferredSources,
|
||||
isLoading,
|
||||
error,
|
||||
isSaving,
|
||||
savePreferredSources
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user