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

Update Analytics setup to display all available accounts and properties. #9440

Conversation

ankitrox
Copy link
Collaborator

@ankitrox ankitrox commented Oct 1, 2024

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 Oct 1, 2024

Build files for a721e81 have been deleted.

Copy link

github-actions bot commented Oct 1, 2024

Size Change: +954 B (+0.05%)

Total Size: 1.86 MB

Filename Size Change
./dist/assets/js/googlesitekit-activation-********************.js 24 kB +3 B (+0.01%)
./dist/assets/js/googlesitekit-adminbar-********************.js 34.6 kB -1 B (0%)
./dist/assets/js/googlesitekit-data-********************.js 2.37 kB +1 B (+0.04%)
./dist/assets/js/googlesitekit-datastore-site-********************.js 20.5 kB +1 B (0%)
./dist/assets/js/googlesitekit-datastore-user-********************.js 26.5 kB -1 B (0%)
./dist/assets/js/googlesitekit-entity-dashboard-********************.js 81.8 kB +4 B (0%)
./dist/assets/js/googlesitekit-main-dashboard-********************.js 156 kB -5 B (0%)
./dist/assets/js/googlesitekit-modules-ads-********************.js 33.1 kB +2 B (+0.01%)
./dist/assets/js/googlesitekit-modules-adsense-********************.js 124 kB +143 B (+0.12%)
./dist/assets/js/googlesitekit-modules-analytics-4-********************.js 176 kB +491 B (+0.28%)
./dist/assets/js/googlesitekit-modules-********************.js 22.1 kB +1 B (0%)
./dist/assets/js/googlesitekit-modules-pagespeed-insights-********************.js 22.5 kB -1 B (0%)
./dist/assets/js/googlesitekit-settings-********************.js 125 kB +4 B (0%)
./dist/assets/js/googlesitekit-splash-********************.js 86.7 kB -1 B (0%)
./dist/assets/js/googlesitekit-user-input-********************.js 60.9 kB +1 B (0%)
./dist/assets/js/googlesitekit-widgets-********************.js 89.7 kB -1 B (0%)
./dist/assets/js/googlesitekit-wp-dashboard-********************.js 62.7 kB +313 B (+0.5%)
ℹ️ View Unchanged
Filename Size
./dist/assets/css/googlesitekit-admin-css-********************.min.css 58.4 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.2 kB
./dist/assets/js/32-********************.js 2.76 kB
./dist/assets/js/33-********************.js 2.25 kB
./dist/assets/js/34-********************.js 3.64 kB
./dist/assets/js/35-********************.js 935 B
./dist/assets/js/36-********************.js 893 B
./dist/assets/js/37-********************.js 1.61 kB
./dist/assets/js/38-********************.js 1.57 kB
./dist/assets/js/39-********************.js 1.61 kB
./dist/assets/js/40-********************.js 1.59 kB
./dist/assets/js/41-********************.js 3.11 kB
./dist/assets/js/analytics-advanced-tracking-********************.js 901 B
./dist/assets/js/googlesitekit-ad-blocking-recovery-********************.js 70.5 kB
./dist/assets/js/googlesitekit-api-********************.js 10.1 kB
./dist/assets/js/googlesitekit-components-gm2-********************.js 6.04 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-datastore-forms-********************.js 8.95 kB
./dist/assets/js/googlesitekit-datastore-location-********************.js 2.08 kB
./dist/assets/js/googlesitekit-datastore-ui-********************.js 10 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-modules-reader-revenue-manager-********************.js 22 kB
./dist/assets/js/googlesitekit-modules-search-console-********************.js 59.6 kB
./dist/assets/js/googlesitekit-modules-sign-in-with-google-********************.js 1.01 kB
./dist/assets/js/googlesitekit-modules-tagmanager-********************.js 32.1 kB
./dist/assets/js/googlesitekit-notifications-********************.js 22.5 kB
./dist/assets/js/googlesitekit-polyfills-********************.js 377 B
./dist/assets/js/googlesitekit-vendor-********************.js 321 kB
./dist/assets/js/runtime-********************.js 1.38 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 is pretty solid and looks nice overall. I ran into a few problems in my testing which should be relatively quick to address and suggested a few other changes and feedback for your consideration. LMK if you have any questions 👍

assets/js/modules/analytics-4/datastore/accounts.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/utils/account.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/utils/account.js Outdated Show resolved Hide resolved
includes/Modules/Analytics_4.php Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.js Outdated Show resolved Hide resolved
@ankitrox
Copy link
Collaborator Author

ankitrox commented Oct 7, 2024

Thank you @aaemnnosttv for your valuable feedback.

I've addressed the feedback provided and tested it at my end. Over to you for another review.

Thanks again.

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 is nearly there, just a few things left to address.

assets/js/modules/analytics-4/datastore/accounts.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.test.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.test.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/datastore/accounts.test.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/utils/account.js Outdated Show resolved Hide resolved
assets/js/modules/analytics-4/utils/account.js Outdated Show resolved Hide resolved
Comment on lines 340 to 342
{
pageToken: nextPageToken,
}
Copy link
Collaborator

@aaemnnosttv aaemnnosttv Oct 7, 2024

Choose a reason for hiding this comment

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

This doesn't work as expected since the fetch action expects a positional argument of just the token rather than this params-like object. It works for the initial request, but won't for subsequent pages.

See the second (highlighted request) invoked manually with a page token here:
image

It should be as simple as this to fix (may need formatting)

Suggested change
{
pageToken: nextPageToken,
}
nextPageToken

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@aaemnnosttv If we pass nextPageToken instead of {pageToken: nextPageToken}, the create-fetch-store throws the error

TypeError: Cannot convert undefined or null to object

fetchGetAccountSummaries will always be called with {pageToken: nextPageToken} and we won't be passing string to it.

return $this->get_service( 'analyticsadmin' )->accountSummaries->listAccountSummaries( array( 'pageSize' => 200 ) );
return $this->get_service( 'analyticsadmin' )->accountSummaries->listAccountSummaries(
array(
'pageSize' => 200,
Copy link
Collaborator

Choose a reason for hiding this comment

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

You can test this PR by temporarily setting the pageSize to something small like 5 to verify multiple pages are requested (assuming you have a Google account with more than 5 GA accounts :)

return API.get(
'modules',
'analytics-4',
'account-summaries',
{},
pageToken,
Copy link
Collaborator

Choose a reason for hiding this comment

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

This also needs to be an object – it's currently just passing through the string, which is why this is being split into an object of letters in my last comment.

Suggested change
pageToken,
{ pageToken },

@ankitrox
Copy link
Collaborator Author

ankitrox commented Oct 9, 2024

@aaemnnosttv I've addressed all the feedback points except for the last one which suggests to change pageToken to { pageToken } and directly passing nextPageToken to fetchGetAccountSummaries.

This is creating error in fetch store because fetch store is trying to serialise the object with null.

@aaemnnosttv
Copy link
Collaborator

I've addressed all the feedback points except for the last one which suggests to change pageToken to { pageToken } and directly passing nextPageToken to fetchGetAccountSummaries.

This is creating error in fetch store because fetch store is trying to serialise the object with null.

@ankitrox this requires the additional comment I left in #9440 (comment) which seems to have been missed :)

I'll see if I can address it quickly as the rest seems good to go here.

@aaemnnosttv
Copy link
Collaborator

Looks good now, there was a weird problem with passing null as an arg to the fetch store fetch action that was causing a cryptic error that wasn't obvious as to where it was coming from but that's fixed now by using an empty string instead along with the other change mentioned above. I also addressed one place where accountSummaries were not being awaited, which probably would have been fine before, but would no longer work correctly I think since accounts will be present from the first response but the matching may not find the right account if the matching account was in a subsequent request to be made.

Tested with a pageSize of 5 and LGTM!
image

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.

Great, thanks @ankitrox !

@aaemnnosttv aaemnnosttv merged commit e25ded7 into develop Oct 9, 2024
23 of 27 checks passed
@aaemnnosttv aaemnnosttv deleted the enhancement/9348-analytics-display-accounts-pagination-fetch branch October 9, 2024 20:08
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