Skip to content
This repository has been archived by the owner on Feb 23, 2024. It is now read-only.

Fix use of sanitizeHTML #7231

Merged
merged 9 commits into from Oct 5, 2022
Merged

Fix use of sanitizeHTML #7231

merged 9 commits into from Oct 5, 2022

Conversation

hsingyuc
Copy link
Contributor

@hsingyuc hsingyuc commented Sep 26, 2022

This PR fixes the sanitizeHTML return value data type and imports to the store-notices-container so we don't have two same methods in one repo.

Fixes #7230

Screenshots

Before After
Screen Shot 2022-09-26 at 12 17 39 PM Screen Shot 2022-09-26 at 12 34 36 PM

Testing

  1. Check out branch 1287-gh-Automattic/woopay
  2. Update the code:
    In src/Checkout/PaymentsHandler.php, comment or remove the if around the exception:
 // if ( empty( $customer_id ) ) {
          $session_data      = WooPaySession::UNSANITIZED_get_data();
          $blog_checkout_url = esc_url( add_query_arg( 'skip_platform_checkout', 'true', $session_data['store_data'] 
                                                 ['blog_checkout_url'] ) );
          /* translators: %1$s opening anchor tag with url, %2$s closing anchor tag */
          $error_message = __( 'we were unable to process your payment. Please %1$s go back to the merchant store %2$s and 
                                          log into WooPay again.', 'woopay' );
          $open_tag      = '<a href="' . $blog_checkout_url . '">';
          $close_tag     = '</a>';
          throw new InvalidSessionException(
	        sprintf( $error_message, $open_tag, $close_tag ),
          );
// }
  1. Get a valid checkout_session by checking out with a valid email and filling in the OTP code.
  2. Place an order and see the error message

WooCommerce Visibility

  • WooCommerce Core
  • Feature plugin
  • Experimental

Changelog

Ensure error messages containing HTML are shown correctly in the Cart and Checkout blocks

@hsingyuc hsingyuc changed the title Update sanitizeHTML method return value data type Fix use of sanitizeHTML Sep 26, 2022
@github-actions
Copy link
Contributor

The release ZIP for this PR is accessible via:

https://wcblocks.wpcomstaging.com/wp-content/uploads/woocommerce-gutenberg-products-block-7231.zip

@github-actions
Copy link
Contributor

github-actions bot commented Sep 26, 2022

Size Change: +60 B (0%)

Total Size: 916 kB

Filename Size Change
build/active-filters-frontend.js 7.62 kB +2 B (0%)
build/active-filters.js 8.3 kB -4 B (0%)
build/all-products-frontend.js 26.5 kB +10 B (0%)
build/all-products.js 33.6 kB +13 B (0%)
build/all-reviews.js 7.79 kB +1 B (0%)
build/attribute-filter-frontend.js 22.4 kB -2 B (0%)
build/attribute-filter.js 13.3 kB -4 B (0%)
build/cart-blocks/cart-accepted-payment-methods-frontend.js 1.39 kB +1 B (0%)
build/cart-blocks/cart-cross-sells-products--product-add-to-cart-frontend.js 5.64 kB +3 B (0%)
build/cart-blocks/cart-cross-sells-products-frontend.js 4.66 kB +1 B (0%)
build/cart-blocks/cart-express-payment--checkout-blocks/express-payment-frontend.js 5.12 kB -3 B (0%)
build/cart-blocks/cart-items-frontend.js 300 B +1 B (0%)
build/cart-blocks/cart-line-items--mini-cart-contents-block/products-table-frontend.js 5.29 kB +3 B (0%)
build/cart-blocks/cart-order-summary-frontend.js 1.11 kB +2 B (0%)
build/cart-blocks/empty-cart-frontend.js 347 B +2 B (+1%)
build/cart-blocks/filled-cart-frontend.js 782 B -1 B (0%)
build/cart-blocks/order-summary-coupon-form-frontend.js 2.73 kB -1 B (0%)
build/cart-blocks/order-summary-fee-frontend.js 273 B -1 B (0%)
build/cart-blocks/order-summary-heading-frontend.js 456 B +2 B (0%)
build/cart-blocks/order-summary-shipping--checkout-blocks/order-summary-shipping-frontend.js 6.6 kB -125 B (-2%)
build/cart-blocks/order-summary-shipping-frontend.js 430 B +2 B (0%)
build/cart-blocks/order-summary-taxes-frontend.js 435 B +2 B (0%)
build/cart-blocks/proceed-to-checkout-frontend.js 1.19 kB +1 B (0%)
build/cart-frontend.js 50.3 kB -16 B (0%)
build/cart.js 46.3 kB -49 B (0%)
build/checkout-blocks/billing-address--checkout-blocks/shipping-address-frontend.js 4.94 kB +3 B (0%)
build/checkout-blocks/billing-address-frontend.js 926 B +1 B (0%)
build/checkout-blocks/contact-information-frontend.js 2.99 kB +2 B (0%)
build/checkout-blocks/express-payment-frontend.js 1.18 kB +3 B (0%)
build/checkout-blocks/fields-frontend.js 344 B +1 B (0%)
build/checkout-blocks/order-summary-cart-items-frontend.js 3.66 kB +2 B (0%)
build/checkout-blocks/order-summary-coupon-form-frontend.js 2.88 kB -2 B (0%)
build/checkout-blocks/order-summary-frontend.js 1.11 kB +3 B (0%)
build/checkout-blocks/order-summary-taxes-frontend.js 436 B +3 B (+1%)
build/checkout-blocks/payment-frontend.js 7.89 kB +2 B (0%)
build/checkout-blocks/shipping-address-frontend.js 1.07 kB +2 B (0%)
build/checkout-blocks/shipping-methods-frontend.js 4.85 kB -128 B (-3%)
build/checkout-blocks/terms-frontend.js 1.65 kB -5 B (0%)
build/checkout-blocks/totals-frontend.js 325 B +1 B (0%)
build/checkout-frontend.js 52.5 kB -27 B (0%)
build/checkout.js 40.1 kB -55 B (0%)
build/featured-category.js 13.2 kB -2 B (0%)
build/featured-product.js 13.4 kB -4 B (0%)
build/legacy-template.js 2.83 kB -2 B (0%)
build/mini-cart-component-frontend.js 16.8 kB -3 B (0%)
build/mini-cart-contents-block/footer-frontend.js 3.18 kB +1 B (0%)
build/mini-cart-contents-block/items-frontend.js 237 B +1 B (0%)
build/mini-cart-contents.js 17 kB +6 B (0%)
build/mini-cart-frontend.js 1.72 kB +1 B (0%)
build/price-filter-frontend.js 13.5 kB +4 B (0%)
build/price-filter.js 9.39 kB -3 B (0%)
build/product-add-to-cart--product-button--product-category-list--product-image--product-price--product-r--a0326d00.js 226 B +1 B (0%)
build/product-add-to-cart--product-button--product-image--product-title.js 2.66 kB -3 B (0%)
build/product-add-to-cart-frontend.js 1.25 kB +1 B (0%)
build/product-add-to-cart.js 6.47 kB +4 B (0%)
build/product-best-sellers.js 7.62 kB -2 B (0%)
build/product-button-frontend.js 1.89 kB +2 B (0%)
build/product-categories.js 2.36 kB -2 B (0%)
build/product-category-list-frontend.js 881 B +2 B (0%)
build/product-category-list.js 503 B +2 B (0%)
build/product-category.js 8.61 kB -1 B (0%)
build/product-image-frontend.js 1.91 kB +2 B (0%)
build/product-image.js 1.62 kB +2 B (0%)
build/product-new.js 7.62 kB -1 B (0%)
build/product-on-sale.js 7.95 kB +1 B (0%)
build/product-price-frontend.js 1.92 kB +3 B (0%)
build/product-price.js 1.53 kB +1 B (0%)
build/product-rating-frontend.js 1.18 kB -1 B (0%)
build/product-rating.js 773 B +1 B (0%)
build/product-sale-badge.js 819 B +2 B (0%)
build/product-search.js 2.61 kB +1 B (0%)
build/product-sku-frontend.js 381 B +1 B (0%)
build/product-stock-indicator.js 624 B +1 B (0%)
build/product-summary-frontend.js 1.29 kB +1 B (0%)
build/product-summary.js 919 B -1 B (0%)
build/product-tag-list.js 498 B +1 B (0%)
build/product-tag.js 7.99 kB +1 B (0%)
build/product-title-frontend.js 1.33 kB +2 B (0%)
build/product-title.js 938 B -1 B (0%)
build/product-top-rated.js 7.86 kB +1 B (0%)
build/products-by-attribute.js 8.53 kB +2 B (0%)
build/rating-filter.js 5.53 kB +4 B (0%)
build/reviews-by-category.js 11.2 kB -3 B (0%)
build/reviews-by-product.js 12.3 kB -2 B (0%)
build/reviews-frontend.js 7.01 kB +2 B (0%)
build/single-product-frontend.js 29.3 kB +21 B (0%)
build/stock-filter-frontend.js 7.64 kB -2 B (0%)
build/stock-filter.js 7.6 kB +1 B (0%)
build/vendors--cart-blocks/cart-cross-sells-products--cart-blocks/order-summary-shipping--checkout-blocks--18f9376a-frontend.js 19.1 kB -5 B (0%)
build/vendors--cart-blocks/cart-cross-sells-products--product-add-to-cart-frontend.js 7.53 kB -3 B (0%)
build/vendors--cart-blocks/order-summary-shipping--checkout-blocks/billing-address--checkout-blocks/order--5b8feb0b-frontend.js 4.85 kB +1 B (0%)
build/wc-blocks-vendors.js 62.4 kB +377 B (+1%)
build/wc-blocks.js 2.63 kB +1 B (0%)
ℹ️ View Unchanged
Filename Size
build/blocks-checkout.js 17.5 kB
build/cart-blocks/cart-cross-sells-frontend.js 253 B
build/cart-blocks/cart-express-payment-frontend.js 798 B
build/cart-blocks/cart-line-items-frontend.js 1.07 kB
build/cart-blocks/cart-totals-frontend.js 321 B
build/cart-blocks/order-summary-discount-frontend.js 2.16 kB
build/cart-blocks/order-summary-subtotal-frontend.js 274 B
build/checkout-blocks/actions-frontend.js 1.8 kB
build/checkout-blocks/order-note-frontend.js 1.13 kB
build/checkout-blocks/order-summary-discount-frontend.js 2.28 kB
build/checkout-blocks/order-summary-fee-frontend.js 275 B
build/checkout-blocks/order-summary-shipping-frontend.js 602 B
build/checkout-blocks/order-summary-subtotal-frontend.js 273 B
build/general-style-rtl.css 1.29 kB
build/general-style.css 1.29 kB
build/handpicked-products.js 7.28 kB
build/mini-cart-contents-block/empty-cart-frontend.js 366 B
build/mini-cart-contents-block/filled-cart-frontend.js 229 B
build/mini-cart-contents-block/products-table-frontend.js 589 B
build/mini-cart-contents-block/shopping-button-frontend.js 287 B
build/mini-cart-contents-block/title-frontend.js 366 B
build/mini-cart.js 4.58 kB
build/price-format.js 1.19 kB
build/product-button--product-category-list--product-image--product-price--product-rating--product-sale-b--e17c7c01.js 433 B
build/product-button--product-image--product-rating--product-sale-badge--product-title.js 302 B
build/product-button.js 1.58 kB
build/product-query.js 648 B
build/product-sale-badge-frontend.js 1.14 kB
build/product-sku.js 379 B
build/product-stock-indicator-frontend.js 995 B
build/product-tag-list-frontend.js 875 B
build/rating-filter-frontend.js 6.73 kB
build/single-product.js 10 kB
build/vendors--cart-blocks/cart-cross-sells-products--cart-blocks/cart-line-items--cart-blocks/cart-order--04fe80d1-frontend.js 5.26 kB
build/vendors--cart-blocks/cart-line-items--checkout-blocks/order-summary-cart-items--mini-cart-contents---233ab542-frontend.js 3.14 kB
build/vendors--mini-cart-contents-block/footer-frontend.js 6.86 kB
build/wc-blocks-data.js 15.9 kB
build/wc-blocks-editor-style-rtl.css 5.24 kB
build/wc-blocks-editor-style.css 5.24 kB
build/wc-blocks-google-analytics.js 1.56 kB
build/wc-blocks-middleware.js 932 B
build/wc-blocks-registry.js 2.79 kB
build/wc-blocks-shared-context.js 1.52 kB
build/wc-blocks-shared-hocs.js 1.72 kB
build/wc-blocks-style-rtl.css 24.1 kB
build/wc-blocks-style.css 24 kB
build/wc-blocks-vendors-style-rtl.css 1.95 kB
build/wc-blocks-vendors-style.css 1.95 kB
build/wc-payment-method-bacs.js 816 B
build/wc-payment-method-cheque.js 811 B
build/wc-payment-method-cod.js 909 B
build/wc-payment-method-paypal.js 837 B
build/wc-settings.js 2.6 kB

compressed-size-action

Copy link

@brianyu28 brianyu28 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @hsingyuc! This looks good to me, though two thoughts:

  • Since I'm less familiar with the woocommerce-blocks, I'd like to get a second reviewer on this for another pair of eyes. Maybe @nielslange, since I see you worked on related code recently?
  • There's a lot of changes to package-lock.json here for what seems like a fairly small dev dependency change. I wonder if maybe yours was generated with a different version of npm than this repo normally uses?

@hsingyuc
Copy link
Contributor Author

hsingyuc commented Sep 27, 2022

Thank you for the feedbacks, @brianyu28!

Since I'm less familiar with the woocommerce-blocks, I'd like to get a second reviewer on this for another pair of eyes. Maybe @nielslange, since I see you worked on related code recently?

Good idea.

There's a lot of changes to package-lock.json here for what seems like a fairly small dev dependency change. I wonder if maybe yours was generated with a different version of npm than this repo normally uses?

I nvm use before npm i and I checked the npm version is the same as .nvmrc. I just tried again and no changes.

@hsingyuc
Copy link
Contributor Author

@brianyu28 I tried to remove package-lock and npm i a few more times, and the third time got some more changes. But still doesn't pass this test JavaScript, CSS and Markdown Linting / Lint JavaScript (pull_request)

Copy link
Member

@nielslange nielslange left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this, @hsingyuc. I left one question, regarding removing dangerouslySetInnerHTML(), and one suggestions, regarding removing the object keys, based on your comment in #7147 (comment).

@nielslange
Copy link
Member

@hsingyuc I just want to let you know that @alexflorisca is currently merging #6612. To avoid inconsistencies, please do not merge this PR until @alexflorisca is done with the other PR and is giving green light. Thanks in advance! 🙌

@alexflorisca
Copy link
Member

You can merge now, but you may have some conflicts. If you need a hand fixing them just let me know.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 29, 2022

Script Dependencies Report

There is no changed script dependency between this branch and trunk.

This comment was automatically generated by the ./github/compare-assets action.

Copy link
Contributor

@opr opr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran the linting jobs locally and they are both fine. E2E failures seem unrelated so I will approve and merge. Thanks @hsingyuc for working on this! 🙌🏼

@github-actions github-actions bot added this to the 8.7.0 milestone Oct 5, 2022
@opr opr added type: bug The issue/PR concerns a confirmed bug. and removed status: ready to merge labels Oct 5, 2022
@opr opr added focus: blocks Specific work involving or impacting how blocks behave. block: cart Issues related to the cart block. block: checkout Issues related to the checkout block. type: task The issue is an internally driven task (e.g. from another A8c team). labels Oct 5, 2022
@opr opr merged commit 29b958b into trunk Oct 5, 2022
@opr opr deleted the fix/7230 branch October 5, 2022 09:59
@hsingyuc
Copy link
Contributor Author

hsingyuc commented Oct 5, 2022

@opr Thank you!

senadir pushed a commit to senadir/woocommerce-blocks that referenced this pull request Nov 12, 2022
* Remove object from sanitizeHTML return value

* Import sanitizeHTML from utils

* Fix dangerously set inner HTML format

* Update package-lock

* Update package-lock

* Update package-lock

* Update @types/dompurify version

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
senadir pushed a commit to senadir/woocommerce-blocks that referenced this pull request Nov 12, 2022
* Remove object from sanitizeHTML return value

* Import sanitizeHTML from utils

* Fix dangerously set inner HTML format

* Update package-lock

* Update package-lock

* Update package-lock

* Update @types/dompurify version

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
senadir pushed a commit to senadir/woocommerce-blocks that referenced this pull request Nov 20, 2022
* Remove object from sanitizeHTML return value

* Import sanitizeHTML from utils

* Fix dangerously set inner HTML format

* Update package-lock

* Update package-lock

* Update package-lock

* Update @types/dompurify version

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
dependabot bot added a commit to senadir/woocommerce-blocks that referenced this pull request Nov 20, 2022
* Remove object from sanitizeHTML return value

* Import sanitizeHTML from utils

* Fix dangerously set inner HTML format

* Update package-lock

* Update package-lock

* Update package-lock

* Update @types/dompurify version

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
dependabot bot added a commit to senadir/woocommerce-blocks that referenced this pull request Nov 20, 2022
* Remove object from sanitizeHTML return value

* Import sanitizeHTML from utils

* Fix dangerously set inner HTML format

* Update package-lock

* Update package-lock

* Update package-lock

* Update @types/dompurify version

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
dependabot bot added a commit to senadir/woocommerce-blocks that referenced this pull request Nov 20, 2022
* Remove object from sanitizeHTML return value

* Import sanitizeHTML from utils

* Fix dangerously set inner HTML format

* Update package-lock

* Update package-lock

* Update package-lock

* Update @types/dompurify version

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
dependabot bot added a commit to senadir/woocommerce-blocks that referenced this pull request Nov 20, 2022
* Remove object from sanitizeHTML return value

* Import sanitizeHTML from utils

* Fix dangerously set inner HTML format

* Update package-lock

* Update package-lock

* Update package-lock

* Update @types/dompurify version

Co-authored-by: Thomas Roberts <5656702+opr@users.noreply.github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
block: cart Issues related to the cart block. block: checkout Issues related to the checkout block. focus: blocks Specific work involving or impacting how blocks behave. type: bug The issue/PR concerns a confirmed bug. type: task The issue is an internally driven task (e.g. from another A8c team).
Projects
None yet
Development

Successfully merging this pull request may close these issues.

The store notices component doesn't render the text
5 participants