fix(base-controller): Fix stateChange
subscriptions with selectors
#3702
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Explanation
Subscribers to the
stateChange
event of anyBaseControllerV2
-based controllers will now correctly handle the initial state change event.Previously the initial state change would always result in this event firing, even for subscriptions with selectors where the selected value has not changed. Additionally, the
previousValue
returned was always set toundefined
the first time.BaseControllerV2
has been updated to correctly compare with the previous value even for the first state change. The returnedpreviousValue
is also now guaranteed to be correct even for the initial state change.References
Fixes #3701
Changelog
@metamask/base-controller
stateChange
event of anyBaseControllerV2
-based controllers will now correctly handle the initial state change eventpreviousValue
returned was always set toundefined
the first time.BaseControllerV2
has been updated to correctly compare with the previous value even for the first state change. The returnedpreviousValue
is also now guaranteed to be correct even for the initial state change.Checklist