Decode HTML entities and strip HTML tags in product names for cart quantity change notifications (#50541)
* Decode cart item names * Strip HTML tags from product name --------- Co-authored-by: Seghir Nadir <nadir.seghir@gmail.com>
This commit is contained in:
parent
6b36b42f47
commit
42e943dc0e
|
@ -3,7 +3,10 @@
|
||||||
*/
|
*/
|
||||||
import { Cart, CartItem } from '@woocommerce/types';
|
import { Cart, CartItem } from '@woocommerce/types';
|
||||||
import { dispatch, select } from '@wordpress/data';
|
import { dispatch, select } from '@wordpress/data';
|
||||||
|
import { decodeEntities } from '@wordpress/html-entities';
|
||||||
import { __, sprintf } from '@wordpress/i18n';
|
import { __, sprintf } from '@wordpress/i18n';
|
||||||
|
// eslint-disable-next-line @wordpress/no-unsafe-wp-apis, @woocommerce/dependency-group
|
||||||
|
import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
|
@ -25,6 +28,9 @@ const isWithinQuantityLimits = ( cartItem: CartItem ) => {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const stripAndDecode = ( text: string ) => {
|
||||||
|
return stripHTML( decodeEntities( text ) );
|
||||||
|
};
|
||||||
const notifyIfQuantityLimitsChanged = ( oldCart: Cart, newCart: Cart ) => {
|
const notifyIfQuantityLimitsChanged = ( oldCart: Cart, newCart: Cart ) => {
|
||||||
newCart.items.forEach( ( cartItem ) => {
|
newCart.items.forEach( ( cartItem ) => {
|
||||||
const oldCartItem = oldCart.items.find( ( item ) => {
|
const oldCartItem = oldCart.items.find( ( item ) => {
|
||||||
|
@ -64,7 +70,7 @@ const notifyIfQuantityLimitsChanged = ( oldCart: Cart, newCart: Cart ) => {
|
||||||
'The quantity of "%1$s" was changed to %2$d. You must purchase this product in groups of %3$d.',
|
'The quantity of "%1$s" was changed to %2$d. You must purchase this product in groups of %3$d.',
|
||||||
'woocommerce'
|
'woocommerce'
|
||||||
),
|
),
|
||||||
cartItem.name,
|
stripAndDecode( cartItem.name ),
|
||||||
// We round down to the nearest step value here. We need to do it this way because at this point we
|
// We round down to the nearest step value here. We need to do it this way because at this point we
|
||||||
// don't know the next quantity. That only gets set once the HTML Input field applies its min/max
|
// don't know the next quantity. That only gets set once the HTML Input field applies its min/max
|
||||||
// constraints.
|
// constraints.
|
||||||
|
@ -91,7 +97,7 @@ const notifyIfQuantityLimitsChanged = ( oldCart: Cart, newCart: Cart ) => {
|
||||||
'The quantity of "%1$s" was increased to %2$d. This is the minimum required quantity.',
|
'The quantity of "%1$s" was increased to %2$d. This is the minimum required quantity.',
|
||||||
'woocommerce'
|
'woocommerce'
|
||||||
),
|
),
|
||||||
cartItem.name,
|
stripAndDecode( cartItem.name ),
|
||||||
cartItem.quantity_limits.minimum
|
cartItem.quantity_limits.minimum
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
|
@ -112,7 +118,7 @@ const notifyIfQuantityLimitsChanged = ( oldCart: Cart, newCart: Cart ) => {
|
||||||
'The quantity of "%1$s" was decreased to %2$d. This is the maximum allowed quantity.',
|
'The quantity of "%1$s" was decreased to %2$d. This is the maximum allowed quantity.',
|
||||||
'woocommerce'
|
'woocommerce'
|
||||||
),
|
),
|
||||||
cartItem.name,
|
stripAndDecode( cartItem.name ),
|
||||||
cartItem.quantity_limits.maximum
|
cartItem.quantity_limits.maximum
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
|
@ -153,7 +159,7 @@ const notifyIfQuantityChanged = (
|
||||||
'The quantity of "%1$s" was changed to %2$d.',
|
'The quantity of "%1$s" was changed to %2$d.',
|
||||||
'woocommerce'
|
'woocommerce'
|
||||||
),
|
),
|
||||||
cartItem.name,
|
stripAndDecode( cartItem.name ),
|
||||||
cartItem.quantity
|
cartItem.quantity
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
|
@ -195,7 +201,7 @@ const notifyIfRemoved = (
|
||||||
sprintf(
|
sprintf(
|
||||||
/* translators: %s is the name of the item. */
|
/* translators: %s is the name of the item. */
|
||||||
__( '"%s" was removed from your cart.', 'woocommerce' ),
|
__( '"%s" was removed from your cart.', 'woocommerce' ),
|
||||||
oldCartItem.name
|
stripAndDecode( oldCartItem.name )
|
||||||
),
|
),
|
||||||
{
|
{
|
||||||
context: 'wc/cart',
|
context: 'wc/cart',
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
Significance: patch
|
||||||
|
Type: fix
|
||||||
|
|
||||||
|
Cart block: Strip HTML tags and decode HTML entities in quantity change notifications.
|
Loading…
Reference in New Issue