@@ -5,27 +5,23 @@ import androidx.fragment.app.Fragment
55import androidx.fragment.app.FragmentActivity
66import androidx.lifecycle.ViewModel
77import androidx.lifecycle.ViewModelProvider
8- import org.kodein.di.DKodein
9- import org.kodein.di.Kodein
10- import org.kodein.di.KodeinAware
11- import org.kodein.di.bindings.BindingKodein
12- import org.kodein.di.bindings.NoArgBindingKodein
13- import org.kodein.di.direct
14- import org.kodein.di.generic.*
8+ import org.kodein.di.*
9+ import org.kodein.di.bindings.BindingDI
10+ import org.kodein.di.bindings.NoArgBindingDI
1511
1612/* *
1713 * Binds a ViewModel to a Kotlin module, assuming that it's a provided dependency.
1814 */
19- inline fun <reified VM : ViewModel > Kodein .Builder.bindViewModel (overrides : Boolean? = null,
20- noinline creator : NoArgBindingKodein <* >.() -> VM ) {
15+ inline fun <reified VM : ViewModel > DI .Builder.bindViewModel (overrides : Boolean? = null,
16+ noinline creator : NoArgBindingDI <* >.() -> VM ) {
2117 bind<VM >(VM ::class .java.simpleName, overrides) with provider(creator)
2218}
2319
2420/* *
2521 * Binds a ViewModel factory to a Kotlin module in order to create new ViewModels.
2622 */
27- inline fun <reified VM : ViewModel , reified F : ViewModelProvider.Factory > Kodein .Builder.bindViewModelFactory (overrides : Boolean? = null,
28- noinline creator : BindingKodein <* >.(Any ) -> F ) {
23+ inline fun <reified VM : ViewModel , reified F : ViewModelProvider.Factory > DI .Builder.bindViewModelFactory (overrides : Boolean? = null,
24+ noinline creator : BindingDI <* >.(Any ) -> F ) {
2925 bind<F >(VM ::class .java, overrides) with factory(creator = creator)
3026}
3127
@@ -37,7 +33,7 @@ inline fun <reified VM : ViewModel, reified F : ViewModelProvider.Factory> Kodei
3733 * if you allow creating new instances of them via [Class.newInstance] with [allowNewInstance].
3834 * The default is true to mimic the default behaviour of [ViewModelProvider].
3935 */
40- class KodeinViewModelFactory (private val injector : DKodein ,
36+ class DIViewModelFactory (private val injector : DirectDI ,
4137 private val allowNewInstance : Boolean = true ) : ViewModelProvider.Factory {
4238 @Suppress(" UNCHECKED_CAST" )
4339 override fun <T : ViewModel > create (modelClass : Class <T >): T {
@@ -51,71 +47,72 @@ class KodeinViewModelFactory(private val injector: DKodein,
5147}
5248
5349/* *
54- * Injects a [ViewModel] into a [FragmentActivity] that implements [KodeinAware ].
50+ * Injects a [ViewModel] into a [FragmentActivity] that implements [DIAware ].
5551 */
5652@MainThread
57- inline fun <reified VM : ViewModel , A > A.viewModel (): Lazy <VM > where A : KodeinAware , A : FragmentActivity {
53+ inline fun <reified VM : ViewModel , A > A.viewModel (): Lazy <VM > where A : DIAware , A : FragmentActivity {
5854 return lazy {
5955 ViewModelProvider (this , direct.instance()).get(VM ::class .java)
6056 }
6157}
6258
6359/* *
64- * Injects a [ViewModel] into a [Fragment] that implements [KodeinAware ].
60+ * Injects a [ViewModel] into a [Fragment] that implements [DIAware ].
6561 */
6662@MainThread
67- inline fun <reified VM : ViewModel , F > F.viewModel (): Lazy <VM > where F : KodeinAware , F : Fragment {
63+ inline fun <reified VM : ViewModel , F > F.viewModel (): Lazy <VM > where F : DIAware , F : Fragment {
6864 return lazy {
6965 ViewModelProvider (this , direct.instance()).get(VM ::class .java)
7066 }
7167}
7268
7369/* *
74- * Injects a [ViewModel] into a [FragmentActivity] that implements [KodeinAware ].
70+ * Injects a [ViewModel] into a [FragmentActivity] that implements [DIAware ].
7571 *
7672 * Requires previous [ViewModelProvider.Factory] injection for the [ViewModel] via [bindViewModelFactory]
7773 * to work and a [TypedViewModel] to be used.
7874 */
7975@MainThread
80- inline fun <reified T , reified VM : TypedViewModel <T >, A > A.viewModel (params : T ): Lazy <VM > where A : KodeinAware , A : FragmentActivity {
76+ inline fun <reified T : Any , reified VM : TypedViewModel <T >, A > A.viewModel (params : T ): Lazy <VM > where A : DIAware , A : FragmentActivity {
8177 return lazy {
8278 ViewModelProvider (this , direct.instance(VM ::class .java, params)).get(VM ::class .java)
8379 }
8480}
8581
8682/* *
87- * Injects a [ViewModel] into a [Fragment] that implements [KodeinAware ].
83+ * Injects a [ViewModel] into a [Fragment] that implements [DIAware ].
8884 *
8985 * Requires previous [ViewModelProvider.Factory] injection for the [ViewModel] via [bindViewModelFactory]
9086 * to work and a [TypedViewModel] to be used.
9187 */
9288@MainThread
93- inline fun <reified T , reified VM : TypedViewModel <T >, F > F.viewModel (params : T ): Lazy <VM > where F : KodeinAware , F : Fragment {
89+ inline fun <reified T : Any , reified VM : TypedViewModel <T >, F > F.viewModel (params : T ): Lazy <VM > where F : DIAware , F : Fragment {
9490 return lazy {
9591 ViewModelProvider (this , direct.instance(VM ::class .java, params)).get(VM ::class .java)
9692 }
9793}
9894
9995/* *
100- * Injects a [ViewModel] with an [Activity] context that implements [KodeinAware], in order to share it between
96+ * Injects a [ViewModel] with an [Activity] context that implements [DIAware
97+ * ], in order to share it between
10198 * different fragments hosted by that same [Activity].
10299 */
103100@MainThread
104- inline fun <reified VM : ViewModel , F > F.sharedActivityViewModel (): Lazy <VM > where F : KodeinAware , F : Fragment {
101+ inline fun <reified VM : ViewModel , F > F.sharedActivityViewModel (): Lazy <VM > where F : DIAware , F : Fragment {
105102 return lazy {
106103 ViewModelProvider (this .requireActivity(), direct.instance()).get(VM ::class .java)
107104 }
108105}
109106
110107/* *
111- * Injects a [ViewModel] with an [Activity] context that implements [KodeinAware ], in order to share it between
108+ * Injects a [ViewModel] with an [Activity] context that implements [DIAware ], in order to share it between
112109 * different fragments hosted by that same [Activity].
113110 *
114111 * Requires previous [ViewModelProvider.Factory] injection for the [ViewModel] via [bindViewModelFactory]
115112 * to work and a [TypedViewModel] to be used.
116113 */
117114@MainThread
118- inline fun <reified T , reified VM : TypedViewModel <T >, F > F.sharedActivityViewModel (params : T ): Lazy <VM > where F : KodeinAware , F : Fragment {
115+ inline fun <reified T : Any , reified VM : TypedViewModel <T >, F > F.sharedActivityViewModel (params : T ): Lazy <VM > where F : DIAware , F : Fragment {
119116 return lazy {
120117 ViewModelProvider (this .requireActivity(), direct.instance(VM ::class .java, params)).get(VM ::class .java)
121118 }
@@ -125,4 +122,4 @@ inline fun <reified T, reified VM : TypedViewModel<T>, F> F.sharedActivityViewMo
125122 * Generic [ViewModel] that adds support for adding a single [params] object to ease parameter
126123 * injection.
127124 */
128- open class TypedViewModel <T >(private val params : T ) : ViewModel()
125+ open class TypedViewModel <T >(private val params : T ) : ViewModel()
0 commit comments