From cdad09bc97f5a813a489063e92ab5bde15f79644 Mon Sep 17 00:00:00 2001 From: Arunkumar Date: Fri, 22 Jul 2022 02:32:43 +0800 Subject: [PATCH] Add component with dependencies sample. (#111) * Add component with dependencies sample. Related #22 * Add binding from dependant component as entry point --- .../src/main/java/dev/arunkumar/scabbard/App.kt | 9 ++++++++- .../java/dev/arunkumar/scabbard/di/AppComponent.kt | 10 ++++++++-- .../dev/arunkumar/scabbard/di/DependantComponent.kt | 2 -- .../java/dev/arunkumar/scabbard/home/HomeActivity.kt | 7 ------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/App.kt b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/App.kt index 8b761e5e..8f67e581 100644 --- a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/App.kt +++ b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/App.kt @@ -23,7 +23,14 @@ import javax.inject.Inject import javax.inject.Named class App : DaggerApplication() { - val appComponent by lazy { DaggerAppComponent.factory().build(this) } + + val appComponent by lazy { + // Setup dependant component + val dependantComponent = DaggerDependantComponent.factory().create(this) + DaggerAppComponent + .factory() + .create(this, dependantComponent) + } @Inject lateinit var complexSingleton: ComplexSingleton diff --git a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/AppComponent.kt b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/AppComponent.kt index 8f58eec0..eafbdc3c 100644 --- a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/AppComponent.kt +++ b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/AppComponent.kt @@ -38,7 +38,8 @@ import javax.inject.Singleton // Activities HomeActivity.Builder::class - ] + ], + dependencies = [DependantComponent::class] ) interface AppComponent : AndroidInjector { @@ -46,8 +47,13 @@ interface AppComponent : AndroidInjector { fun simpleSubcomponentFactory(): SimpleSubcomponent.Factory + fun helloWorld(): HelloWorld + @Component.Factory interface Factory { - fun build(@BindsInstance application: Application): AppComponent + fun create( + @BindsInstance application: Application, + dependantComponent: DependantComponent + ): AppComponent } } diff --git a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/DependantComponent.kt b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/DependantComponent.kt index c1c949d8..822a2a5b 100644 --- a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/DependantComponent.kt +++ b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/di/DependantComponent.kt @@ -20,7 +20,6 @@ import android.app.Application import dagger.BindsInstance import dagger.Component import javax.inject.Inject -import javax.inject.Singleton class HelloWorld @Inject constructor(private val application: Application) { fun say() { @@ -28,7 +27,6 @@ class HelloWorld @Inject constructor(private val application: Application) { } } -@Singleton @Component interface DependantComponent { fun helloWorld(): HelloWorld diff --git a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/home/HomeActivity.kt b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/home/HomeActivity.kt index 94b47615..eb350b51 100644 --- a/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/home/HomeActivity.kt +++ b/samples/android-kotlin/src/main/java/dev/arunkumar/scabbard/home/HomeActivity.kt @@ -24,7 +24,6 @@ import dagger.android.support.DaggerAppCompatActivity import dev.arunkumar.scabbard.R import dev.arunkumar.scabbard.appComponent import dev.arunkumar.scabbard.di.ComplexSingleton -import dev.arunkumar.scabbard.di.DaggerDependantComponent import dev.arunkumar.scabbard.di.SimpleSingleton import dev.arunkumar.scabbard.di.scope.ActivityScope import dev.arunkumar.scabbard.home.fragment.HomeFragment @@ -54,12 +53,6 @@ class HomeActivity : DaggerAppCompatActivity() { // Setup simple subcomponent application.appComponent.simpleSubcomponentFactory().create() - - // Setup dependant component - DaggerDependantComponent.factory() - .create(application) - .helloWorld() - .say() } @Module