Reconnect to the port if not ready upon safety message #281
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.
Overview
In situations where
wrapStore
is happening after theStore
is created we do not currently call the onConnect listener which syncs initial state. The safety handler, however, will mark the store as ready and resolve the ready promise. This means that the content script will start using the store even though it has never synced with the background. In my use case this means that the content script is using the defaultStore
state of{}
.To resolve this, the safety handler (if the store is not ready) now triggers the
Store
to disconnect and then reconnect to the port. This will trigger theonConnect
handler in the wrapped store and sync state as expected.Alternatives
Reproduction Steps
These are effectively the same as #106
I'm wrapping my
wrapStore
in a timeout, then reloading the extension + a page that sets up a Store in a content script. Basically this guarantees that theStore
is set up beforewrapStore
happens.