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

Transaction Details → Show resolution status footer for inquiries #7242

Merged
merged 11 commits into from
Sep 25, 2023

Conversation

Jinksi
Copy link
Member

@Jinksi Jinksi commented Sep 20, 2023

Fixes #7191

Changes proposed in this Pull Request

This PR adds dispute information to the Transaction Details screen for closed or under review inquiries, with a link to the submitted evidence if available.

Inquiry: Under review
image

Inquiry: Closed (challenged)
image

Inquiry: Closed (accepted)
image

Mobile viewport
image

Testing instructions

  • Enable feature flag by running update_option( '_wcpay_feature_dispute_on_transaction_page', '1' ); in WP Console or by modifying your database table wp_options directly.

  • Inquiry: Under review

    • Create a disputed inquiry transaction using the card 4000000000001976 at checkout.
    • Find the inquiry in Payments → Disputes and click it to view the dispute details screen.
    • Click Challenge and submit the challenge form with arbitrary evidence. This will change the dispute's status from warning_needs_response to warning_under_review.
    • Navigate to the transaction details screen for this dispute.
    • Notice the dispute resolution footer that matches the screenshot above.
  • Inquiry: Closed (challenged)

    • Create a disputed inquiry transaction using the card 4000000000001976 at checkout.
    • Find the inquiry in Payments → Disputes and click it to view the dispute details screen.
    • Click Challenge and submit the challenge form with winning_evidence in the “Additional details” field. This will change the dispute's status from warning_needs_response to warning_closed.
    • Navigate to the transaction details screen for this dispute.
    • Notice the dispute resolution footer that matches the screenshot above.
  • Inquiry: Closed (accepted)

    • Create a disputed inquiry transaction using the card 4000000000001976 at checkout.
    • Find the inquiry in Payments → Disputes and click it to view the dispute details screen.
    • Click Accept. This will change the dispute's status from warning_needs_response to warning_closed.
    • Navigate to the transaction details screen for this dispute.
    • Notice the dispute resolution footer that matches the screenshot above.

  • 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 Sep 20, 2023

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 7242 or branch name fix/7191-dispute-resolution-footer-inquiries 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: b8c855e
  • Build time: 2023-09-25 00:33:45 UTC

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

@github-actions
Copy link
Contributor

github-actions bot commented Sep 20, 2023

Size Change: +91 B (0%)

Total Size: 1.42 MB

Filename Size Change
release/woocommerce-payments/dist/index.js 282 kB +91 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.03 kB
release/woocommerce-payments/assets/css/success.css 158 B
release/woocommerce-payments/dist/blocks-checkout-rtl.css 1.51 kB
release/woocommerce-payments/dist/blocks-checkout.css 1.51 kB
release/woocommerce-payments/dist/blocks-checkout.js 73.7 kB
release/woocommerce-payments/dist/checkout-rtl.css 440 B
release/woocommerce-payments/dist/checkout.css 441 B
release/woocommerce-payments/dist/checkout.js 28.7 kB
release/woocommerce-payments/dist/index-rtl.css 36.4 kB
release/woocommerce-payments/dist/index.css 36.4 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.05 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 2.88 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.1 kB
release/woocommerce-payments/dist/multi-currency.css 2.88 kB
release/woocommerce-payments/dist/multi-currency.js 54.7 kB
release/woocommerce-payments/dist/order-rtl.css 676 B
release/woocommerce-payments/dist/order.css 679 B
release/woocommerce-payments/dist/order.js 40.9 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 690 B
release/woocommerce-payments/dist/payment-gateways.css 692 B
release/woocommerce-payments/dist/payment-gateways.js 38.4 kB
release/woocommerce-payments/dist/payment-request-rtl.css 146 B
release/woocommerce-payments/dist/payment-request.css 146 B
release/woocommerce-payments/dist/payment-request.js 11.6 kB
release/woocommerce-payments/dist/product-details.js 789 B
release/woocommerce-payments/dist/settings-rtl.css 8.92 kB
release/woocommerce-payments/dist/settings.css 8.92 kB
release/woocommerce-payments/dist/settings.js 231 kB
release/woocommerce-payments/dist/subscription-edit-page.js 669 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 519 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.3 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 693 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 117 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.4 kB
release/woocommerce-payments/dist/tos-rtl.css 230 B
release/woocommerce-payments/dist/tos.css 231 B
release/woocommerce-payments/dist/tos.js 21.9 kB
release/woocommerce-payments/dist/upe_checkout-rtl.css 440 B
release/woocommerce-payments/dist/upe_checkout.css 441 B
release/woocommerce-payments/dist/upe_checkout.js 34 kB
release/woocommerce-payments/dist/upe_split_checkout-rtl.css 440 B
release/woocommerce-payments/dist/upe_split_checkout.css 441 B
release/woocommerce-payments/dist/upe_split_checkout.js 34.6 kB
release/woocommerce-payments/dist/upe_with_deferred_intent_creation_checkout.js 36.6 kB
release/woocommerce-payments/dist/upe-blocks-checkout-rtl.css 1.51 kB
release/woocommerce-payments/dist/upe-blocks-checkout.css 1.51 kB
release/woocommerce-payments/dist/upe-blocks-checkout.js 39.5 kB
release/woocommerce-payments/dist/upe-split-blocks-checkout-rtl.css 1.51 kB
release/woocommerce-payments/dist/upe-split-blocks-checkout.css 1.51 kB
release/woocommerce-payments/dist/upe-split-blocks-checkout.js 41 kB
release/woocommerce-payments/dist/woopay-express-button-rtl.css 146 B
release/woocommerce-payments/dist/woopay-express-button.css 146 B
release/woocommerce-payments/dist/woopay-express-button.js 50.6 kB
release/woocommerce-payments/dist/woopay-rtl.css 3.85 kB
release/woocommerce-payments/dist/woopay.css 3.85 kB
release/woocommerce-payments/dist/woopay.js 71.6 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 633 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 720 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.32 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.js 13.8 kB
release/woocommerce-payments/vendor/automattic/jetpack-identity-crisis/build/index.rtl.css 2.32 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.2 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.56 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.63 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.38 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.06 kB

compressed-size-action

@Jinksi Jinksi changed the title Transaction Details → Show resolutions status footer for inquiries Transaction Details → Show resolution status footer for inquiries Sep 20, 2023
@Jinksi Jinksi marked this pull request as ready for review September 20, 2023 21:41
@Jinksi Jinksi requested a review from a team September 20, 2023 21:41
@haszari
Copy link
Contributor

haszari commented Sep 21, 2023

@Jinksi started testing this and it feels pretty disconnected without the "you have an inquiry dispute you need to respond to" info box in transaction screen.

Can you mention that in description and/or link to the relevant issue/PR for that aspect?

@Jinksi
Copy link
Member Author

Jinksi commented Sep 21, 2023

@Jinksi started testing this and it feels pretty disconnected without the "you have an inquiry dispute you need to respond to" info box in transaction screen.

Can you mention that in description and/or link to the relevant issue/PR for that aspect?

As per the current design, this footer will actually appear in isolation – is the entire UI on the Transaction Details screen for Inquiry: Closed and Inquiry: Under review.

The UI for Disputes that are lost/won/under_review is similar: RiEQmaKRI7u9USAI3lyZz0VX-fi-6972_85842

image

@haszari
Copy link
Contributor

haszari commented Sep 21, 2023

As per the current design, this footer will actually appear in isolation – is the entire UI on the Transaction Details screen for Inquiry: Closed and Inquiry: Under review.

I get that, and I understand how it works. My point is that as it currently stands the PR reviewer/tester needs to be aware that the critical middle part of the flow for inquiries is not implemented. And, if we shipped this (without the "you have an inquiry" bit), it would be ultra confusing for merchants. I think it's useful to mention that kind of detail in PR description.

I think this is the issue that will cover that gap:

@Jinksi
Copy link
Member Author

Jinksi commented Sep 21, 2023

the critical middle part of the flow for inquiries is not implemented

Oh, I see now 😆 I thought you were referring to "the middle part of the current screen's UI", but I see you meant "the middle part of the flow".

Copy link
Contributor

@haszari haszari left a comment

Choose a reason for hiding this comment

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

Looks good! I tested all scenarios (and also "new inquiry" i.e. no response yet – no footer as expected) and this is working as designed. Checked mobile too.

See screenshots of my tests below.

Marking as approved although there is one thing that needs to be followed up:

  • Inquiry closed footer is cramped on mobile (see screenshot below)

Also added some thoughts about reducing the data passed/exposed to the leaf components, and enforcing required data to avoid inappropriate conditional chaining.

Inquiry challenged & won

Inquiry challenged won

The closed footer is cramped on mobile:
Screenshot 2023-09-25 at 12 32 47 PM

Inquiry challenged – in review

Inquiry challenged in review

Inquiry accepted - closed

Inquiry accepted closed

@@ -273,6 +267,151 @@ const DisputeLostFooter: React.FC< {
);
};

const InquiryUnderReviewFooter: React.FC< {
dispute: Dispute;
Copy link
Contributor

Choose a reason for hiding this comment

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

Could potentially expand this out to the exact sub-fields needed (if we're not using all fields). Noted this because of dispute?.id check later on – we should be able to enforce required data.

Copy link
Member Author

Choose a reason for hiding this comment

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

Although the dispute?.id check was resolved in comment #7242 (comment) as redundant, I've enforced required Dispute properties in 627c158 using Pick:

dispute: Pick<
	Dispute,
	'id' | 'metadata' | 'status' | 'balance_transactions'
>

I could go further and explicitly destructure the individual props, e.g.:

- dispute={ dispute }
+ id={dispute.id} status={dispute.status}

But I think the Pick statements sufficiently communicate the required props.

Copy link
Contributor

Choose a reason for hiding this comment

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

Nice! TIL Pick 🙌

Copy link
Member Author

Choose a reason for hiding this comment

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

Pick also gets a mention in the WooPayments TS Guidelines. 🙌

@Jinksi Jinksi added this pull request to the merge queue Sep 25, 2023
Merged via the queue into develop with commit 5fbe6eb Sep 25, 2023
@Jinksi Jinksi deleted the fix/7191-dispute-resolution-footer-inquiries branch September 25, 2023 00:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants