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

Use fetch instead of apiFetch. #9936

Merged
merged 10 commits into from
Jan 6, 2025

Conversation

ankitrox
Copy link
Collaborator

Summary

Addresses issue:

Relevant technical choices

PR Author Checklist

  • My code is tested and passes existing unit tests.
  • My code has an appropriate set of unit tests which all pass.
  • My code is backward-compatible with WordPress 5.2 and PHP 7.4.
  • My code follows the WordPress coding standards.
  • My code has proper inline documentation.
  • I have added a QA Brief on the issue linked above.
  • I have signed the Contributor License Agreement (see https://cla.developers.google.com/).

Do not alter or remove anything below. The following sections will be managed by moderators only.

Code Reviewer Checklist

  • Run the code.
  • Ensure the acceptance criteria are satisfied.
  • Reassess the implementation with the IB.
  • Ensure no unrelated changes are included.
  • Ensure CI checks pass.
  • Check Storybook where applicable.
  • Ensure there is a QA Brief.
  • Ensure there are no unexpected significant changes to file sizes.

Merge Reviewer Checklist

  • Ensure the PR has the correct target branch.
  • Double-check that the PR is okay to be merged.
  • Ensure the corresponding issue has a ZenHub release assigned.
  • Add a changelog message to the issue.

Copy link

github-actions bot commented Dec 23, 2024

Build files for 3cded87 have been deleted.

Copy link

github-actions bot commented Dec 23, 2024

Size Change: +54 B (0%)

Total Size: 1.98 MB

Filename Size Change
./dist/assets/js/googlesitekit-entity-dashboard-********************.js 81.4 kB +24 B (+0.03%)
./dist/assets/js/googlesitekit-main-dashboard-********************.js 166 kB +30 B (+0.02%)
ℹ️ View Unchanged
Filename Size
./dist/assets/css/googlesitekit-admin-css-********************.min.css 62.1 kB
./dist/assets/css/googlesitekit-adminbar-css-********************.min.css 11.8 kB
./dist/assets/css/googlesitekit-authorize-application-css-********************.min.css 846 B
./dist/assets/css/googlesitekit-wp-dashboard-css-********************.min.css 8.44 kB
./dist/assets/js/33-********************.js 2.76 kB
./dist/assets/js/34-********************.js 2.25 kB
./dist/assets/js/35-********************.js 3.64 kB
./dist/assets/js/36-********************.js 936 B
./dist/assets/js/37-********************.js 892 B
./dist/assets/js/38-********************.js 1.61 kB
./dist/assets/js/39-********************.js 1.57 kB
./dist/assets/js/40-********************.js 1.61 kB
./dist/assets/js/41-********************.js 1.59 kB
./dist/assets/js/42-********************.js 1.83 kB
./dist/assets/js/43-********************.js 3.12 kB
./dist/assets/js/analytics-advanced-tracking-********************.js 901 B
./dist/assets/js/googlesitekit-activation-********************.js 24.1 kB
./dist/assets/js/googlesitekit-ad-blocking-recovery-********************.js 54.1 kB
./dist/assets/js/googlesitekit-adminbar-********************.js 34.7 kB
./dist/assets/js/googlesitekit-api-********************.js 10.1 kB
./dist/assets/js/googlesitekit-components-gm2-********************.js 6.17 kB
./dist/assets/js/googlesitekit-components-gm3-********************.js 10.1 kB
./dist/assets/js/googlesitekit-consent-mode-********************.js 25.6 kB
./dist/assets/js/googlesitekit-data-********************.js 2.37 kB
./dist/assets/js/googlesitekit-datastore-forms-********************.js 8.97 kB
./dist/assets/js/googlesitekit-datastore-location-********************.js 2.09 kB
./dist/assets/js/googlesitekit-datastore-site-********************.js 20.2 kB
./dist/assets/js/googlesitekit-datastore-ui-********************.js 10 kB
./dist/assets/js/googlesitekit-datastore-user-********************.js 28.1 kB
./dist/assets/js/googlesitekit-events-provider-contact-form-7-********************.js 646 B
./dist/assets/js/googlesitekit-events-provider-easy-digital-downloads-********************.js 624 B
./dist/assets/js/googlesitekit-events-provider-mailchimp-********************.js 630 B
./dist/assets/js/googlesitekit-events-provider-ninja-forms-********************.js 712 B
./dist/assets/js/googlesitekit-events-provider-optin-monster-********************.js 675 B
./dist/assets/js/googlesitekit-events-provider-popup-maker-********************.js 634 B
./dist/assets/js/googlesitekit-events-provider-woocommerce-********************.js 657 B
./dist/assets/js/googlesitekit-events-provider-wpforms-********************.js 633 B
./dist/assets/js/googlesitekit-i18n-********************.js 3.93 kB
./dist/assets/js/googlesitekit-metric-selection-********************.js 52 kB
./dist/assets/js/googlesitekit-modules-********************.js 22.3 kB
./dist/assets/js/googlesitekit-modules-ads-********************.js 35.6 kB
./dist/assets/js/googlesitekit-modules-adsense-********************.js 119 kB
./dist/assets/js/googlesitekit-modules-analytics-4-********************.js 191 kB
./dist/assets/js/googlesitekit-modules-pagespeed-insights-********************.js 22.6 kB
./dist/assets/js/googlesitekit-modules-reader-revenue-manager-********************.js 43.2 kB
./dist/assets/js/googlesitekit-modules-search-console-********************.js 69 kB
./dist/assets/js/googlesitekit-modules-sign-in-with-google-********************.js 31 kB
./dist/assets/js/googlesitekit-modules-tagmanager-********************.js 32.3 kB
./dist/assets/js/googlesitekit-notifications-********************.js 36.9 kB
./dist/assets/js/googlesitekit-polyfills-********************.js 378 B
./dist/assets/js/googlesitekit-settings-********************.js 127 kB
./dist/assets/js/googlesitekit-splash-********************.js 68.6 kB
./dist/assets/js/googlesitekit-user-input-********************.js 43.7 kB
./dist/assets/js/googlesitekit-vendor-********************.js 322 kB
./dist/assets/js/googlesitekit-widgets-********************.js 102 kB
./dist/assets/js/googlesitekit-wp-dashboard-********************.js 63.2 kB
./dist/assets/js/runtime-********************.js 1.4 kB

compressed-size-action

Copy link
Collaborator

@aaemnnosttv aaemnnosttv left a comment

Choose a reason for hiding this comment

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

Thanks @ankitrox – this looks very close, just one suggestion about the way the URL is constructed.

assets/js/hooks/useMonitorInternetConnection.js Outdated Show resolved Hide resolved
assets/js/hooks/useMonitorInternetConnection.test.js Outdated Show resolved Hide resolved
@ankitrox
Copy link
Collaborator Author

Thanks @aaemnnosttv for reviewing the PR and providing the feedback.

I've made the suggested changes and assigning it to you for another review.

Copy link
Collaborator

@aaemnnosttv aaemnnosttv left a comment

Choose a reason for hiding this comment

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

Thanks @ankitrox – after some reconsideration, I think we should slightly revise the approach to avoid reaching for the API fetch data.

// We are only interested if the request was successful, to
// confirm online status.
const canReachConnectionCheck = !! connectionCheckResponse;
await fetch( new URL( '/google-site-kit/v1/', rootURL ) );
Copy link
Collaborator

Choose a reason for hiding this comment

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

After some more thought here, I think this is not quite the right solution (criticizing my own IB here! 😄).

The fact that we're reaching for some internal api-fetch data here is a smell that we should be using that instead. The reason I suggested using fetch instead was to avoid the additional cases where api-fetch throws, where fetch only throws when the request fails. Essentially we should be able to do the same using api-fetch with an additional check in the throw block as api-fetch returns a specific error in this case. See https://github.com/WordPress/gutenberg/blob/d9b726b8451746703cc1b9680487e3726ab4a03f/packages/api-fetch/src/index.js#L130-L131

In summary, we can keep most of what we had before, but adjusted to use an approach closer to the suggested one here in letting the try/catch determine the result. The difference in using api-fetch is that we need to set the online state conditionally depending on the error code if it throws. I.e. if it throws and the error code is fetch_error, only then should we set it to be offline. Any other error would mean the request happened, which is all we are concerned about here, and can be ignored.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Thanks @aaemnnosttv , I've made the changes according to the suggestion.

Copy link
Collaborator

@aaemnnosttv aaemnnosttv left a comment

Choose a reason for hiding this comment

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

Thanks @ankitrox – this can be further simplified a little bit which I'll do now before merging, otherwise LGTM!

@@ -63,7 +63,12 @@ export function useMonitorInternetConnection() {

Copy link
Collaborator

Choose a reason for hiding this comment

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

We can remove all of the response checking above because we're only concerned with it throwing or not.

@aaemnnosttv
Copy link
Collaborator

E2E failures are unrelated. See #8229

@aaemnnosttv aaemnnosttv merged commit 3704e47 into develop Jan 6, 2025
18 of 21 checks passed
@aaemnnosttv aaemnnosttv deleted the infrastructure/9485-periodic-connection-check branch January 6, 2025 18:28
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.

2 participants