Closed daniel-waiguru closed 5 months ago
You cannot disable part of a module. However, you can override it.
Overriding it throws an exception.
Caused by: org.kodein.di.Kodein$OverridingException: Binding bind<SharedPreferences>() with ? { ? } must override an existing binding. at org.kodein.di.internal.KodeinContainerBuilderImpl.checkOverrides(KodeinContainerBuilderImpl.kt:106) at org.kodein.di.internal.KodeinContainerBuilderImpl.bind(KodeinContainerBuilderImpl.kt:115) at org.kodein.di.internal.KodeinBuilderImpl$TypeBinder.with(KodeinBuilderImpl.kt:20)
Or am I missing something?
Yeah, SharedPrefences is scoped on the Android Context, see the definition here:
You probably need to do something like:
val contextToken = generic<Context>()
bind(overrides = true) { Provider(contextToken, generic()) { /* Your implementation */ } }
Or:
bind(overrides = true) { contexted<Context>().provider { /* Your implementation */ } }
I am working on a project with the android module enabled
import(androidXModule(this))
but I need to provide a new secure SharedPreferences implementation without removingimport(androidXModule(this))
how do I disable the sharedpreference only from the androidx module?