Skip to content

Instantly share code, notes, and snippets.

View mladenrakonjac's full-sized avatar

Mladen Rakonjac mladenrakonjac

  • Infinum
  • Montenegro
View GitHub Profile
class GitRepoRepository @Inject constructor(var netManager: NetManager) {
...
}
@Singleton
class NetManager @Inject constructor(var applicationContext: Context) {
...
}
@Module
internal abstract class MainActivityModule {
@Module
companion object {
@JvmStatic
@Provides
internal fun providesMainViewModelFactory(gitRepoRepository: GitRepoRepository)
: MainViewModelFactory {
@Singleton
@Component(
modules = [AndroidSupportInjectionModule::class,
AppModule::class])
interface AppComponent : AndroidInjector<ModernApplication> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<ModernApplication>()
}
@Singleton
@Component(
modules = [AndroidSupportInjectionModule::class,
AppModule::class,
AndroidManagersModule::class,
DataModule::class])
interface AppComponent : AndroidInjector<ModernApplication> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<ModernApplication>()
@Module
class DataModule {
@Provides
fun providesGitRepoRepsitory(netManager: NetManager): GitRepoRepository {
return GitRepoRepository(netManager)
}
}
@Module
internal abstract class MainActivityModule {
@ContributesAndroidInjector()
internal abstract fun mainActivity(): MainActivity
}
class ModernApplication : DaggerApplication(){
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
return DaggerAppComponent.builder().create(this)
}
}
@Singleton
@Component(
modules = [AndroidSupportInjectionModule::class,
AppModule::class,
AndroidManagersModule::class,
DataModule::class,
MainActivityModule::class])
interface AppComponent : AndroidInjector<ModernApplication> {
@Component.Builder
@Module
class AndroidManagersModule {
@Singleton @Provides
fun providesNetManager(applicationContext: ModernApplication): NetManager {
return NetManager(applicationContext)
}
}