UNPKG

@automattic/shopping-cart

Version:
38 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const react_1 = require("react"); const shopping_cart_hook_manager_1 = require("./shopping-cart-hook-manager"); const shopping_cart_options_context_1 = tslib_1.__importDefault(require("./shopping-cart-options-context")); const use_manager_client_1 = tslib_1.__importDefault(require("./use-manager-client")); const use_refetch_on_focus_1 = tslib_1.__importDefault(require("./use-refetch-on-focus")); function useShoppingCart(cartKey) { const managerClient = (0, use_manager_client_1.default)('useShoppingCart'); const { defaultCartKey } = (0, react_1.useContext)(shopping_cart_options_context_1.default); const finalCartKey = cartKey ?? defaultCartKey; const manager = managerClient.forCartKey(finalCartKey); (0, use_refetch_on_focus_1.default)(finalCartKey); (0, react_1.useEffect)(() => { manager.fetchInitialCart().catch(() => { // The consumer of the cart data can display any errors returned by the // endpoint, so we will ignore them here. }); }, [manager]); const isMounted = (0, react_1.useRef)(true); (0, react_1.useEffect)(() => { isMounted.current = true; return () => { isMounted.current = false; }; }, []); // Re-render when the cart changes const [cartState, setCartState] = (0, react_1.useState)((0, shopping_cart_hook_manager_1.createUseShoppingCartState)(manager)); (0, react_1.useEffect)(() => { return manager.subscribe(() => { isMounted.current && setCartState((0, shopping_cart_hook_manager_1.createUseShoppingCartState)(manager)); }); }, [manager]); return cartState; } exports.default = useShoppingCart; //# sourceMappingURL=use-shopping-cart.js.map