Add parameterized ViewModel injection via factories #9
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.
PR's key points
The PR adds support for injecting
ViewModel
factories and for retrievingViewModel
s via previously declared factories. This will ease parameterizedViewModel
s delivery and remove some boilerplate that we use when configuring theViewModel
s in production code.The added code relies in a new
TypedViewModel
that enforces passing a singleparams
value to ensure type safety in the injection functions.I couldn't think of a better idea to do this, so if you have any other ideas (the ideal thing would be to ensure type safety while also not forcing to extend another class) feel free to propose them 😉
The final idea would be:
ViewModel
with parameters.ViewModelProvider.Factory
that creates saidViewModel
. Since the code wouldn't be especially complex, we can use something like https://github.com/radutopor/ViewModelFactory to auto-generate said factories and save some boilerplate.ViewModelProvider.Factory
withbindViewModelFactory
ViewModel
instance with parameters usingby viewModel(parameters)