-
Notifications
You must be signed in to change notification settings - Fork 403
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
fix(store): call ngxsOnChanges
whenever state changes (even through plugins)
#1926
Conversation
BundleMonFiles updated (2)
Unchanged files (4)
Total files change -357B -0.12% Groups updated (6)
Final result: ✅ View report in BundleMon website ➡️ |
BundleMon (NGXS Plugins)Unchanged files (28)
No change in files bundle size Unchanged groups (6)
Final result: ✅ View report in BundleMon website ➡️ |
BundleMon (Integration Projects)Files updated (3)
Unchanged files (1)
Total files change +97B +0.03% Final result: ✅ View report in BundleMon website ➡️ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this approach. It is much cleaner, and keeps this logic quite isolated to one place.
A subtle side effect of this change would be that previously the ngxsOnChanges
would have been called before the state is actually set on the root BehaviorSubject
, and now it is called in response to the change in the root behavior subject.
I think that this is ok, and perhaps more logical if the user was to ever get a snapshot of the state from within this function.
I also see that due to the fact that this is literally the very first subscription that connects to a state as it is initialised it will in the majority of cases still honour the contract of being the first thing that is called. After this change, the only situation where another selector for that state would be called before this function is if the state is lazy loaded as part of a feature and a selector is set up before the state is loaded and initialised. While this is a subtle side effect of the change I don't think that it has enough impact to merit concern. One should really not be using the ngxsOnChanges
hook for major logic and especially not logic that would change the same feature state.
Code Climate has analyzed commit 5503495 and detected 0 issues on this pull request. The test coverage on the diff in this pull request is 100.0% (50% is the threshold). This pull request will bring the total coverage in the repository to 96.7% (0.0% change). View more on Code Climate. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Excellent work!!!
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@ngxs/form-plugin](https://github.com/ngxs/store) | dependencies | patch | [`3.7.5` -> `3.7.6`](https://renovatebot.com/diffs/npm/@ngxs%2fform-plugin/3.7.5/3.7.6) | | [@ngxs/storage-plugin](https://github.com/ngxs/store) | dependencies | patch | [`3.7.5` -> `3.7.6`](https://renovatebot.com/diffs/npm/@ngxs%2fstorage-plugin/3.7.5/3.7.6) | | [@ngxs/store](https://github.com/ngxs/store) | dependencies | patch | [`3.7.5` -> `3.7.6`](https://renovatebot.com/diffs/npm/@ngxs%2fstore/3.7.5/3.7.6) | --- ### Release Notes <details> <summary>ngxs/store</summary> ### [`v3.7.6`](https://github.com/ngxs/store/blob/HEAD/CHANGELOG.md#​376-2022-11-23) [Compare Source](ngxs/store@v3.7.5...v3.7.6) - Performance: Run change detection once for all `Actions` subscribers once the stream emits [#​1939](ngxs/store#1939) - Fix: Use `isObservable` to test whether actions return an observable [#​1925](ngxs/store#1925) - Fix: Call `ngxsOnChanges` whenever state changes (even through plugins) [#​1926](ngxs/store#1926) - Fix: Do not delegate errors to `ErrorHandler` if users catch them manually [#​1927](ngxs/store#1927) - Fix: Complete `Actions` stream once root view is removed [#​1933](ngxs/store#1933) - Fix: Storage Plugin - Do not skip deserialization for keys with dot notation [#​1924](ngxs/store#1924) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC40MC4wIiwidXBkYXRlZEluVmVyIjoiMzQuNDAuMiJ9--> Co-authored-by: cabr2-bot <[email protected]> Reviewed-on: https://codeberg.org/Calciumdibromid/CaBr2/pulls/1659 Reviewed-by: Epsilon_02 <[email protected]> Co-authored-by: Calciumdibromid Bot <[email protected]> Co-committed-by: Calciumdibromid Bot <[email protected]>
Issue: #1567