Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix and improve admin child pages redirections logic #9400

Merged

Conversation

vladolaru
Copy link
Contributor

@vladolaru vladolaru commented Sep 6, 2024

Fixes #9395

Changes proposed in this Pull Request

We match the logic from WC_Payments_Admin::maybe_redirect_from_payments_admin_child_pages() with the one in WC_Payments_Account::maybe_redirect_from_overview_page() for a more robust logic and consistent UX. The maybe_redirect_from_payments_admin_child_pages() action hook is now called after the redirections action hooks in WC_Payments_Account (those have a priority of 15, we use 16).

At the same time, we eliminate the erroneous is_stripe_connected() call with the $force_refresh parameter set to true.

Testing instructions

Pre-testing setup

  1. Checkout the PR's branch on your local WooPayments installation
  2. Make sure your WooCommerce store base location country is a WooPayments-eligible country (e.g., pick US)
  3. Make sure you don't have a connected WooPayments account (i.e., when you click on the Payments main menu item, you are presented with the Connect page):
    neTuxj.png
  4. Access your local installation through a tunnel (npm run tube:start) so you will be able to set up your Jetpack connection
  5. Make sure you have the Jetpack Debug Helper plugin installed and activated, with the "Broken token Utilities" enabled:
    m7pTZH.png
  6. Make sure you are using the latest version on trunk of the WCPay Dev Tools

Testing broken setup

  1. Make sure you don't have a connected account
  2. Go to the WCPay Dev page and write down the last fetched timestamp of the Account contents cache:
    Kjm9hy.png
  3. If your store already has a working Jetpack connection, break it by going to Jetpack Debug > Broken Token (you can use "Store these options" to be able to restore it later on) and:
  • Click on "Store these options" to save your current connection details
  • Click on "Clear blog token"
  • Click on "Clear user token (current user)"
  • Click on "Clear the Primary user"
  • click on "Clear the Blog ID"
  1. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/overview and you should be redirected to the Connect page with an error notice at the top:
    8IU5fx.png
  2. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/deposits and you should be redirected to the Connect page with an error notice at the top:
    1f1UMZ.png
  3. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/transactions and you should be redirected to the Connect page with an error notice at the top.
  4. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/disputes and you should be redirected to the Connect page with an error notice at the top.
  5. Go to the WCPay Dev page and the last fetched timestamp of the Account contents cache should NOT have changed
  6. Set up your store's Jetpack connection (or use "Restore from stored options" if you have stored the details of a working connection)
  7. Go to the Payments Connect page and the CTA button should say "Verify business details"
  8. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/overview and you should be redirected to the Connect page with an error notice at the top:
    WeWgcd.png
  9. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/deposits and you should be redirected to the Connect page with an error notice at the top:
    UBfH8y.png
  10. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/transactions and you should be redirected to the Connect page with an error notice at the top.
  11. Try to navigate via your browser URL field to /wp-admin/admin.php?page=wc-admin&path=/payments/disputes and you should be redirected to the Connect page with an error notice at the top.
  12. Go to the WCPay Dev page and the last fetched timestamp of the Account contents cache should NOT have changed

Testing working setup

  1. Set up an account using the "I'm setting up a store for someone else" section of the Payments Connect page. Make sure you end up with an enabled/complete account on our Payments > Overview page
    YCm60L.png
  2. Go to the WCPay Dev page and write down the new last fetched timestamp of the Account contents cache (since the account data changed when you set up a new account):
    zmmKxg.png
  3. Go to the Payments > Deposits page and refresh the page. You should not be redirected to the Connect page.
  4. Go to the Payments > Transactions page and refresh the page. You should not be redirected to the Connect page.
  5. Go to the Payments > Disputes page and refresh the page. You should not be redirected to the Connect page.
  6. Go to the WCPay Dev page and the last fetched timestamp of the Account contents cache should NOT have changed.

  • Run npm run changelog to add a changelog file, choose patch to leave it empty if the change is not significant. You can add multiple changelog files in one PR by running this command a few times.
  • Covered with tests (or have a good reason not to test in description ☝️)
  • Tested on mobile (or does not apply)

Post merge

@vladolaru vladolaru self-assigned this Sep 6, 2024
@botwoo
Copy link
Collaborator

botwoo commented Sep 6, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 9400 or branch name fix/9395-account-data-force-refresh-on-wcpay-pages in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: 01bcaf0
  • Build time: 2024-09-06 17:20:10 UTC

Note: the build is updated when a new commit is pushed to this PR.

Copy link
Contributor

github-actions bot commented Sep 6, 2024

Size Change: 0 B

Total Size: 1.33 MB

ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.08 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.08 kB
release/woocommerce-payments/assets/css/success.css 173 B
release/woocommerce-payments/assets/css/success.rtl.css 173 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.5 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.5 kB
release/woocommerce-payments/dist/blocks-checkout.js 65.8 kB
release/woocommerce-payments/dist/cart-block.js 16.3 kB
release/woocommerce-payments/dist/cart.js 5.73 kB
release/woocommerce-payments/dist/checkout-rtl.css 927 B
release/woocommerce-payments/dist/checkout.css 927 B
release/woocommerce-payments/dist/checkout.js 32.5 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 240 B
release/woocommerce-payments/dist/express-checkout.css 240 B
release/woocommerce-payments/dist/express-checkout.js 14.1 kB
release/woocommerce-payments/dist/frontend-tracks.js 858 B
release/woocommerce-payments/dist/index-rtl.css 39.2 kB
release/woocommerce-payments/dist/index.css 39.2 kB
release/woocommerce-payments/dist/index.js 302 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.08 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.41 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.5 kB
release/woocommerce-payments/dist/multi-currency.css 3.41 kB
release/woocommerce-payments/dist/multi-currency.js 55.5 kB
release/woocommerce-payments/dist/order-rtl.css 730 B
release/woocommerce-payments/dist/order.css 730 B
release/woocommerce-payments/dist/order.js 42.7 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.35 kB
release/woocommerce-payments/dist/payment-gateways.css 1.35 kB
release/woocommerce-payments/dist/payment-gateways.js 39.2 kB
release/woocommerce-payments/dist/payment-request-rtl.css 240 B
release/woocommerce-payments/dist/payment-request.css 240 B
release/woocommerce-payments/dist/payment-request.js 13.7 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 386 B
release/woocommerce-payments/dist/plugins-page.css 386 B
release/woocommerce-payments/dist/plugins-page.js 20.1 kB
release/woocommerce-payments/dist/product-details-rtl.css 433 B
release/woocommerce-payments/dist/product-details.css 436 B
release/woocommerce-payments/dist/product-details.js 11.5 kB
release/woocommerce-payments/dist/settings-rtl.css 11.6 kB
release/woocommerce-payments/dist/settings.css 11.5 kB
release/woocommerce-payments/dist/settings.js 224 kB
release/woocommerce-payments/dist/subscription-edit-page.js 703 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.2 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 730 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.3 kB
release/woocommerce-payments/dist/tokenized-payment-request-rtl.css 240 B
release/woocommerce-payments/dist/tokenized-payment-request.css 240 B
release/woocommerce-payments/dist/tokenized-payment-request.js 14.5 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 21.8 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 6.14 kB
release/woocommerce-payments/dist/woopay-express-button.js 24 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.54 kB
release/woocommerce-payments/dist/woopay.css 4.51 kB
release/woocommerce-payments/dist/woopay.js 71.3 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 625 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 814 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/jetpack-script-data.js 735 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/react-jsx-runtime.js 553 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.02 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/script-data.js 69 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/babel.config.js 163 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.css 2.45 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.2 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.45 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 280 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 625 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 333 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 626 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 417 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 584 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 215 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 721 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 412 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 621 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.04 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 294 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 408 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.59 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 301 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 746 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 574 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 414 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 543 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.78 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.84 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 545 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.2 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.7 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 507 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 358 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 428 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 782 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.09 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.26 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 391 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.04 kB

compressed-size-action

@vladolaru vladolaru requested a review from dmallory42 September 6, 2024 15:43
Copy link
Contributor

@dmallory42 dmallory42 left a comment

Choose a reason for hiding this comment

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

Tested and this works as expected. Thanks for handling it!

Copy link
Contributor

@mordeth mordeth 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 it, Vlad!

The $force_refresh parameter was introduced with the Test-drive PR, and I have thoroughly tested it through the following scenarios:

  • Onboarding a test-drive account locally with both Jetpack connected and Dev Tools enabled.
  • Onboarding a test-drive account locally with Jetpack disconnected and Dev Tools enabled.
  • Onboarding a test-drive account on a JN site with Jetpack connected and without Dev Tools.
  • Onboarding a test-drive account on a JN site with Jetpack disconnected and without Dev Tools.

✅ Code changes are looking good!

@vladolaru vladolaru enabled auto-merge September 6, 2024 17:18
@vladolaru vladolaru added this pull request to the merge queue Sep 6, 2024
Merged via the queue into develop with commit 2eea958 Sep 6, 2024
24 of 25 checks passed
@vladolaru vladolaru deleted the fix/9395-account-data-force-refresh-on-wcpay-pages branch September 6, 2024 17:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Account data is refreshed on every WooPayments admin child page refresh
4 participants