UNPKG

@automattic/shopping-cart

Version:
65 lines 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCartSyncManager = void 0; const tslib_1 = require("tslib"); const debug_1 = tslib_1.__importDefault(require("debug")); const cart_functions_1 = require("./cart-functions"); const cart_keys_1 = require("./cart-keys"); const empty_carts_1 = require("./empty-carts"); const debug = (0, debug_1.default)('shopping-cart:sync'); const emptyCart = (0, empty_carts_1.getEmptyResponseCart)(); const getEmptyCart = () => Promise.resolve(emptyCart); function createCartSyncManager(cartKey, getCart, setCart) { const shouldNotFetchRealCart = cart_keys_1.cartKeysThatDoNotAllowFetch.includes(cartKey); const setServerCart = (cartParam) => setCart(cartKey, cartParam); const getServerCart = () => { if (shouldNotFetchRealCart) { return getEmptyCart(); } return getCart(cartKey); }; return { syncPendingCartToServer(state, dispatch) { const requestCart = (0, cart_functions_1.convertResponseCartToRequestCart)(state.responseCart); debug('sending edited cart to server', requestCart); setServerCart(requestCart) .then((response) => { debug('update cart request complete', requestCart, '; updated cart is', response); dispatch({ type: 'RECEIVE_UPDATED_RESPONSE_CART', updatedResponseCart: (0, cart_functions_1.convertRawResponseCartToResponseCart)(response), }); }) .catch((error) => { debug('error while setting cart', error); dispatch({ type: 'RAISE_ERROR', error: 'SET_SERVER_CART_ERROR', message: error.message, }); }); }, fetchInitialCartFromServer(dispatch) { debug('fetching initial cart from server'); getServerCart() .then((response) => { debug('initialized cart is', response); const initialResponseCart = (0, cart_functions_1.convertRawResponseCartToResponseCart)(response); dispatch({ type: 'RECEIVE_INITIAL_RESPONSE_CART', initialResponseCart, }); }) .catch((error) => { debug('error while initializing cart', error); dispatch({ type: 'RAISE_ERROR', error: 'GET_SERVER_CART_ERROR', message: error.message, }); }); }, }; } exports.createCartSyncManager = createCartSyncManager; //# sourceMappingURL=sync.js.map