Я новичок в Kodein, и у меня есть этот простой модуль:
import com.myapp.MyApplication.Companion.INSTANCE
import com.facebook.flipper.android.AndroidFlipperClient
import com.facebook.flipper.core.FlipperClient
import com.facebook.flipper.plugins.inspector.DescriptorMapping
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin
import io.ktor.client.HttpClient
import io.ktor.client.engine.okhttp.OkHttp
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import org.kodein.di.Kodein
import org.kodein.di.generic.bind
import org.kodein.di.generic.instance
import org.kodein.di.generic.singleton
const val FLIPPER_MODULE_TAG = "FLIPPER_MODULE_TAG"
val flipperModule = Kodein.Module(FLIPPER_MODULE_TAG) {
bind<NetworkFlipperPlugin>() with singleton {
NetworkFlipperPlugin()
}
bind<FlipperClient>() with singleton {
val networkFlipperPlugin: NetworkFlipperPlugin = instance()
val client: FlipperClient = AndroidFlipperClient.getInstance(INSTANCE.baseContext)
val inspectorFlipperPlugin =
InspectorFlipperPlugin(INSTANCE, DescriptorMapping.withDefaults())
client.addPlugin(networkFlipperPlugin)
client.addPlugin(inspectorFlipperPlugin)
client
}
bind<HttpClient>() with singleton {
val logging = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
val networkFlipperPlugin: NetworkFlipperPlugin = instance()
val okHttpClientInstance = OkHttpClient.Builder().addNetworkInterceptor(FlipperOkhttpInterceptor(networkFlipperPlugin)).build()
val httpClient = HttpClient(OkHttp) {
engine {
addInterceptor(logging)
preconfigured = okHttpClientInstance
}
}
httpClient
}
}
Проблема в том, что
val networkFlipperPlugin: NetworkFlipperPlugin = instance()
всегда возвращает новый экземпляр вместо синглтона ( на самом деле все мои синглтоны возвращают новый экземпляр каждый раз, когда я их получаю)
Есть ли какие-либо указания на это? Большое спасибо!