import { useInfiniteQuery, useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { getCats, getUserCats, getCat, uploadCat, deleteCat } from '@/api/endpoints'; export function useCats() { return useInfiniteQuery({ queryKey: ['cats'], queryFn: ({ pageParam }) => getCats(pageParam as number).then((r) => r.data), initialPageParam: 1, getNextPageParam: (lastPage) => lastPage.page < lastPage.totalPages ? lastPage.page + 1 : undefined, }); } export function useUserCats(userId: number) { return useQuery({ queryKey: ['cats', 'user', userId], queryFn: () => getUserCats(userId).then((r) => r.data), enabled: !!userId, }); } export function useCat(id: number) { return useQuery({ queryKey: ['cat', id], queryFn: () => getCat(id).then((r) => r.data), enabled: !!id, }); } export function useUploadCat() { const qc = useQueryClient(); return useMutation({ mutationFn: (formData: FormData) => uploadCat(formData).then((r) => r.data), onSuccess: () => { qc.invalidateQueries({ queryKey: ['cats'] }); }, }); } export function useDeleteCat() { const qc = useQueryClient(); return useMutation({ mutationFn: (id: number) => deleteCat(id), onSuccess: () => { qc.invalidateQueries({ queryKey: ['cats'] }); }, }); }