Anvil-Sample
Anvil-Sample copied to clipboard
Setup with mavericks compose
Thanks for this sample, it's very helpful.
But we are missing a part here.
We use mavericks-compose so we have this method available to create the ViewModel inside a Composable:
inline fun <reified VM : MavericksViewModel<S>, reified S : MavericksState> mavericksViewModel
We are using a Single-Activity and no fragments at all. We rely on NavController
How can we tie a DaggerComponent to a Composable?
Because this:
class DaggerMavericksViewModelFactory<VM : MavericksViewModel<S>, S : MavericksState>(
private val viewModelClass: Class<VM>
) : MavericksViewModelFactory<VM, S> {
override fun create(viewModelContext: ViewModelContext, state: S): VM {
val bindings: DaggerMavericksBindings = when (viewModelContext) {
is FragmentViewModelContext -> viewModelContext.fragment.bindings()
else -> viewModelContext.activity.bindings()
}
val viewModelFactoryMap = bindings.viewModelFactories()
val viewModelFactory = viewModelFactoryMap[viewModelClass] ?: error("Cannot find ViewModelFactory for ${viewModelClass.name}.")
@Suppress("UNCHECKED_CAST")
val castedViewModelFactory = viewModelFactory as? AssistedViewModelFactory<VM, S>
val viewModel = castedViewModelFactory?.create(state)
return viewModel as VM
}
}
will always look for our single Activity as we have no fragments.