You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: Remove previousUserTraits from metametrics controller state (#30621)
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until the template has been
completely filled out, and PR status checks have passed at least once.
-->
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
Truly solving https://github.com/MetaMask/MetaMask-planning/issues/3932
required us to clear `previousUserTraits` from metametrics controller
state. That property just functions as a cache, and we could actually
maintain it in memory.
The reason we need to clear it is that there are many users who had the
`has_marketing_consent` trait populated to `true` when the application
had a bug that prevented that trait from being submitted to segment.
That bug is fixed, so new users don't hit that problem. However, to
correctly track existing users that have `has_marketing_consent` set to
true, we need the comparison of previous and current user traits in the
`_buildUserTraitsObject` function to fail its equality check.
To do that, we are clearing `previousUserTraits` so that, upon update of
the extension and when the first metrics event is set to segment, the
current user trait values will compare to undefined, and they will all
be submitted to segment, including `has_marketing_consent`.
[](https://codespaces.new/MetaMask/metamask-extension/pull/30621?quickstart=1)
Fixes:
1. Install a build from this branch
2. Open the background console and the network tab
3. Start onboarding. On the metametrics screen, click the checkbox and
then "I agree"
4. The network tab should now include a request to segment with user
traits, where has_marketing_consent is set to true
--
1. Follow the above steps on the v12.9.3 build (step 4 will fail)
2. Update the version of that install to the build from this branch
3. Log in.
4. The network tab should now include a request to segment with user
traits, where has_marketing_consent is set to true
<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->
<!-- [screenshots/recordings] -->
<!-- [screenshots/recordings] -->
- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask
Extension Coding
Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
0 commit comments