import { useLocalCartStore, LocalCartItem } from "../store/LocalCartStore";

export const useLocalCart = () => {
  const {
    items,
    addItem,
    updateItem,
    removeItem,
    getItem,
    clearCart,
  } = useLocalCartStore();

  const addToLocalCart = (
    productId: number,
    variantId: string,
    quantity: number = 1
  ) => {
    addItem({ productId, variantId, quantity });
  };

  const updateLocalCartItem = (
    productId: number,
    variantId: string,
    quantity: number
  ) => {
    if (quantity <= 0) {
      removeFromLocalCart(productId, variantId);
    } else {
      updateItem(productId, variantId, quantity);
    }
  };

  const removeFromLocalCart = (productId: number, variantId: string) => {
    removeItem(productId, variantId);
  };

  const getLocalCartItem = (productId: number, variantId: string) => {
    return getItem(productId, variantId);
  };

  const getLocalCartItems = () => {
    return items;
  };

  const getLocalCartItemsCount = () => {
    return items.reduce((total, item) => total + item.quantity, 0);
  };

  const clearLocalCart = () => {
    clearCart();
  };

  return {
    localCartItems: items,
    addToLocalCart,
    updateLocalCartItem,
    removeFromLocalCart,
    getLocalCartItem,
    getLocalCartItems,
    getLocalCartItemsCount,
    clearLocalCart,
  };
};
