From bd15c47b69b1c80bc5b92cdd8fec1b2de3238b6a Mon Sep 17 00:00:00 2001 From: Ivanov Konstantin Date: Sun, 24 Feb 2019 12:49:22 +0300 Subject: [PATCH] add app di --- app/build.gradle | 6 +++-- app/src/main/AndroidManifest.xml | 11 +++++++- .../agileburo/anytype/AndroidApplication.kt | 27 +++++++++++++++++++ .../com/agileburo/anytype/MainActivity.kt | 17 ++++++++++++ .../com/agileburo/anytype/di/app/AppModule.kt | 15 +++++++++++ .../anytype/di/app/ApplicationComponent.kt | 16 +++++++++++ .../anytype/di/app/MainScreenComponent.kt | 12 +++++++++ .../anytype/di/app/MainScreenModule.kt | 9 +++++++ app/src/main/res/xml/my_backup_rules.xml | 4 +++ dependencies.gradle | 2 ++ 10 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/agileburo/anytype/AndroidApplication.kt create mode 100644 app/src/main/java/com/agileburo/anytype/di/app/AppModule.kt create mode 100644 app/src/main/java/com/agileburo/anytype/di/app/ApplicationComponent.kt create mode 100644 app/src/main/java/com/agileburo/anytype/di/app/MainScreenComponent.kt create mode 100644 app/src/main/java/com/agileburo/anytype/di/app/MainScreenModule.kt create mode 100644 app/src/main/res/xml/my_backup_rules.xml diff --git a/app/build.gradle b/app/build.gradle index b9d89015d3..a43947331b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,10 +50,10 @@ ext { } dependencies { + implementation project(':core_utils') + def applicationDependencies = rootProject.ext.mainApplication def unitTestDependencies = rootProject.ext.unitTesting - def acceptanceTestDependencies = rootProject.ext.acceptanceTesting - def developmentDependencies = rootProject.ext.development //Compile time dependencies kapt applicationDependencies.daggerCompiler @@ -72,6 +72,8 @@ dependencies { implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation applicationDependencies.glide + implementation applicationDependencies.dagger + implementation applicationDependencies.timber //Redactor implementation 'com.ebolo:krichtexteditor:0.0.5' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index afa69aa056..2a44691a56 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,16 +3,25 @@ package="com.agileburo.anytype"> + + + + + + - diff --git a/app/src/main/java/com/agileburo/anytype/AndroidApplication.kt b/app/src/main/java/com/agileburo/anytype/AndroidApplication.kt new file mode 100644 index 0000000000..a80c5857c4 --- /dev/null +++ b/app/src/main/java/com/agileburo/anytype/AndroidApplication.kt @@ -0,0 +1,27 @@ +package com.agileburo.anytype + +import android.app.Application +import com.agileburo.anytype.di.app.AppModule +import com.agileburo.anytype.di.app.ApplicationComponent +import com.agileburo.anytype.di.app.DaggerApplicationComponent +import timber.log.Timber + +class AndroidApplication : Application() { + + + val applicationComponent: ApplicationComponent by lazy { + DaggerApplicationComponent.builder() + .appModule(AppModule(this)) + .build() + } + + override fun onCreate() { + super.onCreate() + injectMembers() + if(BuildConfig.DEBUG) { + Timber.plant(Timber.DebugTree()) + } + } + + private fun injectMembers() = applicationComponent.inject(this) +} \ No newline at end of file diff --git a/app/src/main/java/com/agileburo/anytype/MainActivity.kt b/app/src/main/java/com/agileburo/anytype/MainActivity.kt index c3dee60815..69b42600a7 100644 --- a/app/src/main/java/com/agileburo/anytype/MainActivity.kt +++ b/app/src/main/java/com/agileburo/anytype/MainActivity.kt @@ -1,13 +1,29 @@ package com.agileburo.anytype +import android.content.Context import android.os.Bundle import android.support.v7.app.AppCompatActivity +import com.agileburo.anytype.di.app.MainScreenComponent import com.ebolo.krichtexteditor.fragments.kRichEditorFragment import kotlinx.android.synthetic.main.activity_main.* +import timber.log.Timber +import javax.inject.Inject class MainActivity : AppCompatActivity() { + @Inject + lateinit var context: Context + + private val applicationComponent by lazy { + (application as AndroidApplication).applicationComponent + } + + private val mainScreenComponent: MainScreenComponent by lazy { + applicationComponent.mainScreenComponent() + } + override fun onCreate(savedInstanceState: Bundle?) { + mainScreenComponent.inject(this) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) btnART.setOnClickListener { @@ -18,5 +34,6 @@ class MainActivity : AppCompatActivity() { .commit() } + Timber.d("Get context:$context") } } diff --git a/app/src/main/java/com/agileburo/anytype/di/app/AppModule.kt b/app/src/main/java/com/agileburo/anytype/di/app/AppModule.kt new file mode 100644 index 0000000000..0565adf5c8 --- /dev/null +++ b/app/src/main/java/com/agileburo/anytype/di/app/AppModule.kt @@ -0,0 +1,15 @@ +package com.agileburo.anytype.di.app + +import android.content.Context +import com.agileburo.anytype.AndroidApplication +import dagger.Module +import dagger.Provides +import javax.inject.Singleton + +@Module +class AppModule(private val app: AndroidApplication) { + + @Singleton + @Provides + fun provideContext(): Context = app.applicationContext +} \ No newline at end of file diff --git a/app/src/main/java/com/agileburo/anytype/di/app/ApplicationComponent.kt b/app/src/main/java/com/agileburo/anytype/di/app/ApplicationComponent.kt new file mode 100644 index 0000000000..27500fcb97 --- /dev/null +++ b/app/src/main/java/com/agileburo/anytype/di/app/ApplicationComponent.kt @@ -0,0 +1,16 @@ +package com.agileburo.anytype.di.app + +import android.content.Context +import com.agileburo.anytype.AndroidApplication +import dagger.Component +import javax.inject.Singleton + +@Singleton +@Component(modules = [AppModule::class]) +interface ApplicationComponent { + + fun inject(app: AndroidApplication) + fun mainScreenComponent(): MainScreenComponent + fun context(): Context + +} \ No newline at end of file diff --git a/app/src/main/java/com/agileburo/anytype/di/app/MainScreenComponent.kt b/app/src/main/java/com/agileburo/anytype/di/app/MainScreenComponent.kt new file mode 100644 index 0000000000..f30091e227 --- /dev/null +++ b/app/src/main/java/com/agileburo/anytype/di/app/MainScreenComponent.kt @@ -0,0 +1,12 @@ +package com.agileburo.anytype.di.app + +import com.agileburo.anytype.MainActivity +import com.agileburo.anytype.core_utils.di.PerScreen +import dagger.Subcomponent + +@PerScreen +@Subcomponent(modules = [MainScreenModule::class]) +interface MainScreenComponent{ + + fun inject(mainScreen: MainActivity) +} \ No newline at end of file diff --git a/app/src/main/java/com/agileburo/anytype/di/app/MainScreenModule.kt b/app/src/main/java/com/agileburo/anytype/di/app/MainScreenModule.kt new file mode 100644 index 0000000000..34c2d8eb85 --- /dev/null +++ b/app/src/main/java/com/agileburo/anytype/di/app/MainScreenModule.kt @@ -0,0 +1,9 @@ +package com.agileburo.anytype.di.app + +import dagger.Module + +@Module +class MainScreenModule{ + + +} \ No newline at end of file diff --git a/app/src/main/res/xml/my_backup_rules.xml b/app/src/main/res/xml/my_backup_rules.xml new file mode 100644 index 0000000000..231c81321a --- /dev/null +++ b/app/src/main/res/xml/my_backup_rules.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/dependencies.gradle b/dependencies.gradle index bd0e09a834..c79941c954 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -25,6 +25,7 @@ ext { javaxInject_version = '1' retrofit_version = '2.3.0' okhttp_logging_interceptor_version = '3.8.1' + timber_version = '4.7.1' //Unit Testing robolectric_version = '3.8' @@ -61,6 +62,7 @@ ext { javaxInject: "javax.inject:javax.inject:$javaxInject_version", retrofit: "com.squareup.retrofit2:converter-gson:$retrofit_version", okhttpLoggingInterceptor: "com.squareup.okhttp3:logging-interceptor:$okhttp_logging_interceptor_version", + timber: "com.jakewharton.timber:timber:$timber_version" ] unitTesting = [