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

Payments settings improvements #8428

Merged
merged 8 commits into from
Mar 26, 2024
Merged

Conversation

timur27
Copy link
Contributor

@timur27 timur27 commented Mar 21, 2024

Closes #8246
The ACs for #8246 are essentially listed in #8246 (comment).

Changes proposed in this Pull Request

This PR removes the spinner when checking the payment method on the Settings page (the spinner was there only to meet design expectations. Confirmed in this discussion.

This PR also updates payment method statuses if they were updated after clicking the Save settings button. This means that merchants don't necessarily need to refresh the page to see the update.

Testing instructions

Note: if you are able to set up your Stripe account in the way that it returns the capabilities you expect for testing, feel free to skip 1️⃣ and 2️⃣. For more inspiration, see #8246 (comment)

Payment methods checkbox has no spinner
  • Enable any payment method in the settings page and confirm that the checkbox is enabled immediately without delay
  • After enabling, save settings, refresh the page, and confirm that the payment method is still enabled
  • Choose any payment method which has requirements to meet and confirm that after checking the checkbox, the activation modal window is enabled. Example:
    • disable ideal in Settings
    • 1️⃣ before this line in server, add $this->account_data['capability_requirements']['ideal_payments'][] = 'business_profile.support_email';, clear account cache
    • navigate to settings, check the iDEAL checkbox and confirm that the activation modal window is displayed
Payment methods list updates after saving settings without the need to refresh the page
  • 2️⃣ modify this line with the following code
		$res = $this->get_settings();
		$res->data['payment_method_statuses']['bancontact_payments'] = [
			'status' => 'rejected',
			'requirements' => 'business_profile.support_email'
		];
  • navigate to settings, enable Bancontact, save settings and confirm that Bancontact status changed to Rejected without refreshing the page

  • 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

@botwoo
Copy link
Collaborator

botwoo commented Mar 21, 2024

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 8428 or branch name settings/updates-improvements 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: c18a509
  • Build time: 2024-03-26 10:57:47 UTC

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

Copy link
Contributor

github-actions bot commented Mar 21, 2024

Size Change: +82 B (0%)

Total Size: 1.2 MB

Filename Size Change
release/woocommerce-payments/dist/index.js 290 kB +18 B (0%)
release/woocommerce-payments/dist/multi-currency-switcher-block.js 59.4 kB +16 B (0%)
release/woocommerce-payments/dist/multi-currency.js 54.5 kB +15 B (0%)
release/woocommerce-payments/dist/order.js 41.7 kB +16 B (0%)
release/woocommerce-payments/dist/payment-gateways.js 38.5 kB +14 B (0%)
release/woocommerce-payments/dist/settings.js 199 kB +3 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.06 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.06 kB
release/woocommerce-payments/assets/css/success.css 158 B
release/woocommerce-payments/assets/css/success.rtl.css 158 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 1.92 kB
release/woocommerce-payments/dist/blocks-checkout.css 1.91 kB
release/woocommerce-payments/dist/blocks-checkout.js 54.1 kB
release/woocommerce-payments/dist/cart.js 4.45 kB
release/woocommerce-payments/dist/checkout-rtl.css 405 B
release/woocommerce-payments/dist/checkout.css 406 B
release/woocommerce-payments/dist/checkout.js 37 kB
release/woocommerce-payments/dist/index-rtl.css 40.1 kB
release/woocommerce-payments/dist/index.css 40 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.05 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 3.28 kB
release/woocommerce-payments/dist/multi-currency.css 3.29 kB
release/woocommerce-payments/dist/order-rtl.css 733 B
release/woocommerce-payments/dist/order.css 735 B
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.21 kB
release/woocommerce-payments/dist/payment-gateways.css 1.21 kB
release/woocommerce-payments/dist/payment-request-rtl.css 155 B
release/woocommerce-payments/dist/payment-request.css 155 B
release/woocommerce-payments/dist/payment-request.js 12.4 kB
release/woocommerce-payments/dist/product-details-rtl.css 155 B
release/woocommerce-payments/dist/product-details.css 155 B
release/woocommerce-payments/dist/product-details.js 16.6 kB
release/woocommerce-payments/dist/settings-rtl.css 11 kB
release/woocommerce-payments/dist/settings.css 10.8 kB
release/woocommerce-payments/dist/subscription-edit-page.js 669 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 527 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 19.4 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 710 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 18.5 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 236 B
release/woocommerce-payments/dist/tos.js 21 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 4.58 kB
release/woocommerce-payments/dist/woopay-express-button-rtl.css 155 B
release/woocommerce-payments/dist/woopay-express-button.css 155 B
release/woocommerce-payments/dist/woopay-express-button.js 21.1 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.44 kB
release/woocommerce-payments/dist/woopay.css 4.41 kB
release/woocommerce-payments/dist/woopay.js 71 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 622 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 812 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.43 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.01 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 522 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 581 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/babel.config.js 160 B
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.css 2.37 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.js 13.5 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.rtl.css 2.37 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.03 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 291 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 403 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.6 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 299 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 742 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 572 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 411 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 544 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.8 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.83 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 544 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.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.6 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 502 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 355 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 429 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 781 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.1 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.27 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 392 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.05 kB

compressed-size-action

@timur27 timur27 marked this pull request as ready for review March 22, 2024 13:55
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think that this task is not part of the flow anymore. I will confirm it and remove it separately.

@timur27 timur27 requested review from a team and frosso and removed request for a team March 22, 2024 13:57
Copy link
Contributor

@frosso frosso left a comment

Choose a reason for hiding this comment

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

The changes are providing an excellent improvement, great idea!

One thing I'd like to note as an implementation alternative: I noticed the change in client/settings/save-settings-section/index.js that updates the data store within the component. In order to do so, you also needed to change the implementation of the useGetPaymentMethodStatuses and the implementation (and return value) of the saveSettings action.
But with this, you're relying on the client/settings/save-settings-section/index.js component's body to do the update, and the usePaymentMethodStatuses is now a hook that can technically also update the payment_method_statuses settings key (even tho this settings key doesn't have a related UI element).

By implementing this change on the saveSettings action, you can avoid modifying useGetPaymentMethodStatuses (and all the related test/component changes), and you can also avoid relying on the client/settings/save-settings-section/index.js component to do the update:

		yield updateIsSavingSettings( true, null );

		const response = yield apiFetch( {
			path: `${ NAMESPACE }/settings`,
			method: 'post',
			data: settings,
		} );

		yield updateSettingsValues( {
			payment_method_statuses: response.data.payment_method_statuses,
		} );

		yield dispatch( 'core/notices' ).createSuccessNotice(
			__( 'Settings saved.', 'woocommerce-payments' )
		);

What do you think of this alternative?

@timur27 timur27 force-pushed the settings/updates-improvements branch from afb850b to 6336843 Compare March 26, 2024 09:58
@timur27
Copy link
Contributor Author

timur27 commented Mar 26, 2024

@frosso Love the suggestion, I applied it because it's definitely the better way of doing things! Thanks!

@timur27 timur27 requested a review from frosso March 26, 2024 10:09
Copy link
Contributor

@frosso frosso 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 the changes! One small note on client/data/settings/test/actions.js - just because I'm not sure if we should export updateSettingsValues.

Copy link
Contributor

@frosso frosso left a comment

Choose a reason for hiding this comment

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

Thanks so much for the changes and your patience, Timur!

@timur27
Copy link
Contributor Author

timur27 commented Mar 26, 2024

Thank you @frosso !

@timur27 timur27 added this pull request to the merge queue Mar 26, 2024
Merged via the queue into develop with commit 7976853 Mar 26, 2024
22 checks passed
@timur27 timur27 deleted the settings/updates-improvements branch March 26, 2024 11:18
Jinksi pushed a commit that referenced this pull request Mar 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Disable all payment methods if an account is in a non-approved state
3 participants