From 8c17767122560821a7691fbdbdd9d98bca6f6061 Mon Sep 17 00:00:00 2001 From: Evgeny Dubravin Date: Tue, 2 Apr 2024 03:42:28 +0700 Subject: [PATCH] add Auth Component --- .../java/ru/touchin/template/di/AppComponent.kt | 6 ++++-- .../java/ru/touchin/template/di/AppScope.kt | 6 ++++++ .../touchin/template/di/auth/AuthComponent.kt | 17 +++++++++++++++++ .../ru/touchin/template/di/auth/AuthModule.kt | 16 ++++++++++++++++ .../ru/touchin/template/di/auth/AuthScope.kt | 6 ++++++ .../ru/touchin/template/di/modules/AppModule.kt | 4 +++- 6 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/ru/touchin/template/di/AppScope.kt create mode 100644 app/src/main/java/ru/touchin/template/di/auth/AuthComponent.kt create mode 100644 app/src/main/java/ru/touchin/template/di/auth/AuthModule.kt create mode 100644 app/src/main/java/ru/touchin/template/di/auth/AuthScope.kt diff --git a/app/src/main/java/ru/touchin/template/di/AppComponent.kt b/app/src/main/java/ru/touchin/template/di/AppComponent.kt index 7537879..27efa14 100644 --- a/app/src/main/java/ru/touchin/template/di/AppComponent.kt +++ b/app/src/main/java/ru/touchin/template/di/AppComponent.kt @@ -3,8 +3,8 @@ package ru.touchin.template.di import android.content.Context import dagger.BindsInstance import dagger.Component -import javax.inject.Singleton import ru.touchin.template.App +import ru.touchin.template.di.auth.AuthComponent import ru.touchin.template.di.modules.AppModule import ru.touchin.template.di.modules.NavigationModule import ru.touchin.template.di.modules.ViewModelModule @@ -17,9 +17,11 @@ import ru.touchin.template.feature.SingleActivity NavigationModule::class ] ) -@Singleton +@AppScope interface AppComponent : SharedComponent { + fun authComponent(): AuthComponent.Builder + @Component.Builder interface Builder { diff --git a/app/src/main/java/ru/touchin/template/di/AppScope.kt b/app/src/main/java/ru/touchin/template/di/AppScope.kt new file mode 100644 index 0000000..f062861 --- /dev/null +++ b/app/src/main/java/ru/touchin/template/di/AppScope.kt @@ -0,0 +1,6 @@ +package ru.touchin.template.di + +import javax.inject.Scope + +@Scope +annotation class AppScope \ No newline at end of file diff --git a/app/src/main/java/ru/touchin/template/di/auth/AuthComponent.kt b/app/src/main/java/ru/touchin/template/di/auth/AuthComponent.kt new file mode 100644 index 0000000..e3c5dfc --- /dev/null +++ b/app/src/main/java/ru/touchin/template/di/auth/AuthComponent.kt @@ -0,0 +1,17 @@ +package ru.touchin.template.di.auth + +import dagger.Subcomponent +import ru.touchin.template.feature.first.FirstFragment + +@Subcomponent(modules = [AuthModule::class]) +@AuthScope +interface AuthComponent { + + @Subcomponent.Builder + interface Builder { + + fun build(): AuthComponent + } + + fun inject(entry: FirstFragment) +} \ No newline at end of file diff --git a/app/src/main/java/ru/touchin/template/di/auth/AuthModule.kt b/app/src/main/java/ru/touchin/template/di/auth/AuthModule.kt new file mode 100644 index 0000000..be8abd5 --- /dev/null +++ b/app/src/main/java/ru/touchin/template/di/auth/AuthModule.kt @@ -0,0 +1,16 @@ +package ru.touchin.template.di.auth + +import dagger.Module +import dagger.Provides +import ru.touchin.template.feature.second.SecondRepository +import ru.touchin.template.feature.second.SecondRepositoryImpl + +@Module +class AuthModule { + + @Provides + @AuthScope + internal fun providesSecondRepository(): SecondRepository { + return SecondRepositoryImpl() + } +} \ No newline at end of file diff --git a/app/src/main/java/ru/touchin/template/di/auth/AuthScope.kt b/app/src/main/java/ru/touchin/template/di/auth/AuthScope.kt new file mode 100644 index 0000000..64dbe7a --- /dev/null +++ b/app/src/main/java/ru/touchin/template/di/auth/AuthScope.kt @@ -0,0 +1,6 @@ +package ru.touchin.template.di.auth + +import javax.inject.Scope + +@Scope +annotation class AuthScope \ No newline at end of file diff --git a/app/src/main/java/ru/touchin/template/di/modules/AppModule.kt b/app/src/main/java/ru/touchin/template/di/modules/AppModule.kt index 0943510..aab5a49 100644 --- a/app/src/main/java/ru/touchin/template/di/modules/AppModule.kt +++ b/app/src/main/java/ru/touchin/template/di/modules/AppModule.kt @@ -1,11 +1,13 @@ package ru.touchin.template.di.modules import dagger.Module +import ru.touchin.template.di.auth.AuthComponent @Module( includes = [ RepositoryModule::class, NetworkModule::class - ] + ], + subcomponents = [AuthComponent::class] ) class AppModule \ No newline at end of file