@automattic/shopping-cart
Version:
A library to use the WordPress.com shopping cart.
65 lines • 2.77 kB
JavaScript
;
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