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

chore: cherry-pick #10133 #10140

Merged
merged 1 commit into from
Jun 27, 2024
Merged

chore: cherry-pick #10133 #10140

merged 1 commit into from
Jun 27, 2024

Conversation

github-actions[bot]
Copy link
Contributor

This PR cherry-picks #10133

<!--
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.
-->

## **Description**

We were failing to properly restore persisted state for some
BaseControllerV1 controllers. This resulted in state being lost when the
application was restarted. The only confirmed affected controller so far
is the `NftController`.

The context here is that for some older controllers, rather than passing
the initial state into the controller directly when it is constructed,
we call the `update` function directly. This has always been a bad
practice (controllers should update their own state), and we're forced
to fix this for controllers that we update to `BaseControllerV2`
(because directly updating state like this is no longer possible. But
this method of rehydrating controller state was still relied upon in
some cases.

This was broken recently in #9570 when a condition was added to fix a
type error. The condition was meant to check that the controller had a
`subscribe` function. Unfortunately this `hasProperty` check only looks
at owned properties, not inherited properties, and the `subscribe`
function was inherited from the base class. It has been updated to use
the `in` operator instead, which does look up the entire prototype
chain.

## **Related issues**

Fixes #10057

## **Manual testing steps**

See #10057

## **Screenshots/Recordings**

### **Before**

See #10057

### **After**


https://github.com/MetaMask/metamask-mobile/assets/2459287/b7cf3e09-086b-4964-8180-e58195969e17

## **Pre-merge author checklist**

- [x] I’ve followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I’ve included tests if applicable
- [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [x] I’ve applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.

## **Pre-merge reviewer checklist**

- [ ] 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.
@Gudahtt Gudahtt marked this pull request as ready for review June 27, 2024 12:22
@Gudahtt Gudahtt requested a review from a team as a code owner June 27, 2024 12:22
@Gudahtt Gudahtt merged commit fa1ae88 into release/7.26.0 Jun 27, 2024
4 checks passed
@Gudahtt Gudahtt deleted the chore/cherry-pick-10133 branch June 27, 2024 13:08
@github-actions github-actions bot locked and limited conversation to collaborators Jun 27, 2024
@metamaskbot metamaskbot added the release-7.26.0 Issue or pull request that will be included in release 7.26.0 label Jun 27, 2024
@metamaskbot
Copy link
Collaborator

No release label on PR. Adding release label release-7.26.0 on PR, as PR was cherry-picked in branch 7.26.0.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
rc-cherry-picked release-7.26.0 Issue or pull request that will be included in release 7.26.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants