1 package expo.modules.devlauncher.koin 2 3 import expo.modules.devlauncher.helpers.DevLauncherInstallationIDHelper 4 import expo.modules.devlauncher.launcher.DevLauncherIntentRegistry 5 import expo.modules.devlauncher.launcher.DevLauncherIntentRegistryInterface 6 import expo.modules.devlauncher.launcher.DevLauncherLifecycle 7 import expo.modules.devlauncher.launcher.loaders.DevLauncherAppLoaderFactory 8 import expo.modules.devlauncher.launcher.loaders.DevLauncherAppLoaderFactoryInterface 9 import expo.modules.devlauncher.tests.DevLauncherDisabledTestInterceptor 10 import expo.modules.devlauncher.tests.DevLauncherTestInterceptor 11 import okhttp3.OkHttpClient 12 import org.koin.core.KoinApplication 13 import org.koin.dsl.koinApplication 14 import org.koin.dsl.module 15 <lambda>null16val DevLauncherTestModule = module { 17 single<DevLauncherTestInterceptor> { DevLauncherDisabledTestInterceptor() } 18 } 19 <lambda>null20val DevLauncherBaseModule = module { 21 single<DevLauncherIntentRegistryInterface> { DevLauncherIntentRegistry() } 22 single { OkHttpClient() } 23 single { DevLauncherLifecycle() } 24 single { DevLauncherInstallationIDHelper() } 25 factory<DevLauncherAppLoaderFactoryInterface> { DevLauncherAppLoaderFactory() } 26 } 27 <lambda>null28private val koinAppFactory = { 29 koinApplication { 30 modules(DevLauncherBaseModule, DevLauncherTestModule) 31 } 32 } 33 34 object DevLauncherKoinContext { 35 private var internalApp: KoinApplication = koinAppFactory() 36 reinitializenull37 fun reinitialize() { 38 internalApp.close() 39 internalApp = koinAppFactory() 40 } 41 42 val app: KoinApplication 43 get() = internalApp 44 } 45 devLauncherKoinnull46fun devLauncherKoin() = DevLauncherKoinContext.app.koin 47