Synthesize update(state:actions:environment:)
for ModelProtocol
#16
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.
#15 caused fx to be run immediately instead of joined on main. The intent was to allow for composing multiple actions by sending up many
Just(.action)
fx. However,This PR introduces an alternative approach to composing multiple update functions. Any type that conforms to
ModelProtocol
has aupdate(state:actions:environment)
static function synthesized for it. This function can be used to simulate the effect of sending multiple actions in sequence immediately, in effect, composing the actions.State is updated immediately, fx are merged, and last transaction wins.
Now that we have a way to immediately sequence actions in same state update, we no longer need to run fx on same tick. Joining on main is my preference from an API perspective because it has fewer footguns in implementation and use.
Breaking changes
update(state:actions:environment:)
.