fix(core): correctly handle state changes during onSubscribe in createStateSourceAction #643
+74
−39
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.
Description
This fixes a quite subtle bug: Any state changes happening in
onSubscribe
would be not be part of the source.observable. The reason for this is that the implementation would do:However, this means that if (2) actually changes the state synchronously then that's the value that is skipped in (3) happens to be the new state.
We're using this pattern in
getDocumentSyncStatus
.This changes the implementation to be based around an observable which contains the actual values. This is both shorter in code and also happens to avoid calling
getCurrent
multiple times. PreviouslygetCurrent
would be invoked twice: Once for detecting that a value had changed and once again when producing the value.What to review
withSubscribeHook
.Testing
Fun gif
Sorry, I couldn't find any fun gifs about RxJS.