import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { api } from '@/lib/api';
import { useCartStore } from '@/stores/cart';

export function useCart() {
  const setItemCount = useCartStore((s) => s.setItemCount);

  return useQuery({
    queryKey: ['cart'],
    queryFn: async () => {
      const response = await api.cart.get();
      setItemCount(response.data.item_count);
      return response;
    },
  });
}

export function useAddToCart() {
  const queryClient = useQueryClient();
  const incrementCount = useCartStore((s) => s.incrementCount);

  return useMutation({
    mutationFn: (itemId: string) => api.cart.addItem(itemId),
    onSuccess: () => {
      incrementCount();
      queryClient.invalidateQueries({ queryKey: ['cart'] });
    },
  });
}

export function useRemoveFromCart() {
  const queryClient = useQueryClient();
  const decrementCount = useCartStore((s) => s.decrementCount);

  return useMutation({
    mutationFn: (itemId: string) => api.cart.removeItem(itemId),
    onSuccess: () => {
      decrementCount();
      queryClient.invalidateQueries({ queryKey: ['cart'] });
    },
  });
}
