@automattic/wpcom-checkout
Version:
Functions and components used by WordPress.com checkout.
44 lines • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.canItemBeRemovedFromCart = canItemBeRemovedFromCart;
const calypso_products_1 = require("@automattic/calypso-products");
/**
* Determine whether there is a DIFM (Do it for me) product in the shopping cart.
*/
function hasDIFMProduct(cart) {
return cart.products.some(calypso_products_1.isDIFMProduct);
}
/**
* Check if the given item is a plan product and the DIFM product exists in the provided shopping cart object
*/
function isPlanWithDIFMInTheCart(item, responseCart) {
return (0, calypso_products_1.isPlan)(item) && hasDIFMProduct(responseCart);
}
/**
* Check if a cart item can be removed from the cart.
*
* If this returns false, there will be no option to remove the specified
* product from the cart.
*
* Please use this sparingly; it's often better to add guards inside the
* shopping-cart endpoint on the backend rather than here. Not being shown any
* way to remove an item from the cart can be very confusing for users. If you
* add a guard in the shopping-cart endpoint instead, it can return an error
* message to explain why.
*/
function canItemBeRemovedFromCart(item, responseCart) {
const itemTypesThatCannotBeDeleted = ['domain_redemption'];
if (itemTypesThatCannotBeDeleted.includes(item.product_slug)) {
return false;
}
// The plan cannot be removed from the cart when in combination with the DIFM lite product
if (isPlanWithDIFMInTheCart(item, responseCart)) {
return false;
}
// If the item is an A4A siteless checkout, it cannot be removed from the cart
if (item.extra?.isA4ASitelessCheckout) {
return false;
}
return true;
}
//# sourceMappingURL=can-item-be-removed-from-cart.js.map