AndroidAPS/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt

76 lines
3.7 KiB
Kotlin
Raw Normal View History

2019-12-13 02:12:19 +01:00
package info.nightscout.androidaps.dependencyInjection
import android.content.Context
2019-12-21 20:17:08 +01:00
import dagger.Binds
2020-03-25 23:51:04 +01:00
import dagger.Lazy
2019-12-13 02:12:19 +01:00
import dagger.Module
import dagger.Provides
2020-01-10 02:27:14 +01:00
import dagger.android.HasAndroidInjector
2020-03-25 23:51:04 +01:00
import info.nightscout.androidaps.Config
2019-12-26 17:50:16 +01:00
import info.nightscout.androidaps.MainApp
2020-05-09 10:52:20 +02:00
import info.nightscout.androidaps.db.DatabaseHelperProvider
2020-05-07 09:54:36 +02:00
import info.nightscout.androidaps.interfaces.*
2019-12-28 01:52:20 +01:00
import info.nightscout.androidaps.logging.AAPSLogger
2020-03-16 21:40:29 +01:00
import info.nightscout.androidaps.plugins.configBuilder.PluginStore
2019-12-26 23:26:00 +01:00
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation
2020-05-09 10:52:20 +02:00
import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue
2020-05-07 09:54:36 +02:00
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
2020-01-10 23:14:58 +01:00
import info.nightscout.androidaps.queue.CommandQueue
2020-03-21 15:09:14 +01:00
import info.nightscout.androidaps.utils.FabricPrivacy
2020-05-09 10:52:20 +02:00
import info.nightscout.androidaps.utils.androidNotification.NotificationHolder
2019-12-26 17:50:16 +01:00
import info.nightscout.androidaps.utils.resources.ResourceHelper
2019-12-13 02:12:19 +01:00
import info.nightscout.androidaps.utils.sharedPreferences.SP
import info.nightscout.androidaps.utils.storage.FileStorage
import info.nightscout.androidaps.utils.storage.Storage
2019-12-13 02:12:19 +01:00
import javax.inject.Singleton
2020-05-03 15:04:08 +02:00
@Module(includes = [
AppModule.AppBindings::class,
PluginsModule::class,
SkinsModule::class
])
2019-12-30 23:26:48 +01:00
open class AppModule {
2019-12-13 02:12:19 +01:00
2019-12-26 23:26:00 +01:00
@Provides
@Singleton
2020-03-21 15:09:14 +01:00
fun provideProfileFunction(injector: HasAndroidInjector, aapsLogger: AAPSLogger, sp: SP, resourceHelper: ResourceHelper, activePlugin: ActivePluginProvider, fabricPrivacy: FabricPrivacy): ProfileFunction {
return ProfileFunctionImplementation(injector, aapsLogger, sp, resourceHelper, activePlugin, fabricPrivacy)
2019-12-27 19:20:38 +01:00
}
2020-03-25 23:51:04 +01:00
@Provides
2020-05-07 09:54:36 +02:00
fun providesPlugins(configInterface: ConfigInterface,
@PluginsModule.AllConfigs allConfigs: Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>,
2020-03-25 23:51:04 +01:00
@PluginsModule.PumpDriver pumpDrivers: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>,
@PluginsModule.NotNSClient notNsClient: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>,
2020-04-24 22:39:56 +02:00
@PluginsModule.NSClient nsClient: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>,
@PluginsModule.APS aps: Lazy<Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>>)
: List<@JvmSuppressWildcards PluginBase> {
2020-03-25 23:51:04 +01:00
val plugins = allConfigs.toMutableMap()
2020-05-07 09:54:36 +02:00
if (configInterface.PUMPDRIVERS) plugins += pumpDrivers.get()
if (configInterface.APS) plugins += aps.get()
if (!configInterface.NSCLIENT) plugins += notNsClient.get()
if (configInterface.NSCLIENT) plugins += nsClient.get()
2020-03-25 23:51:04 +01:00
return plugins.toList().sortedBy { it.first }.map { it.second }
}
@Provides
@Singleton
fun provideStorage(): Storage {
return FileStorage()
}
2019-12-21 20:17:08 +01:00
@Module
interface AppBindings {
2019-12-13 02:12:19 +01:00
2019-12-30 00:53:44 +01:00
@Binds fun bindContext(mainApp: MainApp): Context
2020-01-10 02:27:14 +01:00
@Binds fun bindInjector(mainApp: MainApp): HasAndroidInjector
2020-05-04 00:42:13 +02:00
@Binds fun bindActivePluginProvider(pluginStore: PluginStore): ActivePluginProvider
2020-01-10 23:14:58 +01:00
@Binds fun commandQueueProvider(commandQueue: CommandQueue): CommandQueueProvider
2020-05-07 09:54:36 +02:00
@Binds fun configInterfaceProvider(config: Config): ConfigInterface
@Binds fun treatmentInterfaceProvider(treatmentsPlugin: TreatmentsPlugin): TreatmentsInterface
2020-05-09 10:52:20 +02:00
@Binds fun provideDatabaseHelperInterface(databaseHelperProvider: DatabaseHelperProvider): DatabaseHelperInterface
@Binds fun provideUploadQueueInterface(uploadQueue: UploadQueue): UploadQueueInterface
@Binds fun provideNotificationHolderInterface(notificationHolder: NotificationHolder): NotificationHolderInterface
2019-12-13 02:12:19 +01:00
}
}