refactor: enhanced thunk registry system #44
Merged
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.
The current registry system for thunks works like this:
const thunks = createThunks()
const go = thunks.create("go")
store.run(thunks.bootup)
However, there's a caveat with this implementation: all thunks must be created before
store.run
is called. Further, since thunks are created at the module-level, if the module that exports those thunks isn't loaded beforethunk.bootup
is called then those thunks are silently ignored.This change will make it so it doesn't matter when a thunk is created, we will "lazy load" it.
We still require
store.run(thunks.bootup)
to be called -- because we need access to the store and won't have it when creating a thunk.We are also sending an error whenever a thunk is dispatched without it being registered which should help ensure thunks get properly registered.
We also changed the name of
thunks.bootup
tothunks.register
to make it more clear that this is a registry system.