'use client'; import { useEffect, useState, useCallback } from 'react'; import { getCartProductIds, addProductToCart, removeProductFromCart, clearCart, } from '../services/cart'; export function useCart() { const [cartIds, setCartIds] = useState(null); // Load cart lần đầu useEffect(() => { setCartIds(getCartProductIds()); }, []); const refresh = useCallback(() => { setCartIds(getCartProductIds()); }, []); const addToCart = useCallback((productId: number) => { addProductToCart(productId); refresh(); }, [refresh]); const removeFromCart = useCallback((productId: number) => { removeProductFromCart(productId); refresh(); }, [refresh]); const clear = useCallback(() => { clearCart(); setCartIds([]); }, []); const isInCart = useCallback( (productId: number) => cartIds?.includes(productId) ?? false, [cartIds] ); return { cartIds: cartIds ?? [], cartCount: cartIds?.length ?? 0, loading: cartIds === null, addToCart, removeFromCart, clear, isInCart, }; }