From e866098d55611d0c420e60373d0161e1f442a722 Mon Sep 17 00:00:00 2001 From: AlekseyMinai Date: Mon, 16 May 2022 22:14:06 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D1=8B=20di?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 4 +-- .../main/java/ru/otus/daggerhomework/App.kt | 13 +++++++- .../daggerhomework/ApplicationComponent.kt | 4 --- .../ru/otus/daggerhomework/EventObservable.kt | 11 +++++++ .../otus/daggerhomework/ViewModelProducer.kt | 2 -- .../di/FragmentProducerComponent.kt | 4 +++ .../di/FragmentReceiverComponent.kt | 4 +++ .../di/app/ApplicationComponent.kt | 33 +++++++++++++++++++ .../daggerhomework/di/common/ActivityScope.kt | 7 ++++ .../di/common/NeedInicializeException(.kt | 3 ++ .../di/mainActivity/MainActivityComponent.kt | 14 ++++++++ 11 files changed, 90 insertions(+), 9 deletions(-) delete mode 100644 app/src/main/java/ru/otus/daggerhomework/ApplicationComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/EventObservable.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/di/FragmentProducerComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/di/FragmentReceiverComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/di/app/ApplicationComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/di/common/ActivityScope.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/di/common/NeedInicializeException(.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/di/mainActivity/MainActivityComponent.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fe328c68..1177443b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,9 +1,9 @@ - Date: Mon, 23 May 2022 20:25:49 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=20di?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 11 +++- app/src/main/AndroidManifest.xml | 5 +- .../ru/otus/daggerhomework/ColorGenerator.kt | 3 +- .../main/java/ru/otus/daggerhomework/Event.kt | 5 ++ .../ru/otus/daggerhomework/EventObservable.kt | 10 +--- .../otus/daggerhomework/FragmentProducer.kt | 26 --------- .../otus/daggerhomework/FragmentReceiver.kt | 31 ---------- .../ru/otus/daggerhomework/MainActivity.kt | 11 ---- .../daggerhomework/MutableEventObservable.kt | 18 ++++++ .../otus/daggerhomework/ViewModelProducer.kt | 17 ------ .../otus/daggerhomework/ViewModelReceiver.kt | 18 ------ .../ru/otus/daggerhomework/{ => app}/App.kt | 4 +- .../app => app/di}/ApplicationComponent.kt | 12 ++-- .../{di => }/common/ActivityScope.kt | 2 +- .../daggerhomework/common/FragmentScope.kt | 7 +++ .../NeedInitializeException.kt} | 2 +- .../daggerhomework/common/ViewModelKey.kt | 11 ++++ .../common/ViewModelProviderFactory.kt | 16 ++++++ .../di/FragmentProducerComponent.kt | 4 -- .../di/FragmentReceiverComponent.kt | 4 -- .../di/mainActivity/MainActivityComponent.kt | 14 ----- .../otus/daggerhomework/main/MainActivity.kt | 24 ++++++++ .../main/di/MainActivityComponent.kt | 56 +++++++++++++++++++ .../main/di/MainActivityModule.kt | 42 ++++++++++++++ .../producer/FragmentProducer.kt | 31 ++++++++++ .../producer/ViewModelProducer.kt | 26 +++++++++ .../producer/di/FragmentProducerComponent.kt | 56 +++++++++++++++++++ .../producer/di/ProducerBindings.kt | 22 ++++++++ .../producer/di/ProducerDependency.kt | 7 +++ .../receiver/FragmentReceiver.kt | 48 ++++++++++++++++ .../receiver/ViewModelReceiver.kt | 23 ++++++++ .../receiver/di/FragmentReceiverComponent.kt | 53 ++++++++++++++++++ .../receiver/di/ReceiverDependency.kt | 7 +++ .../receiver/di/ReceiverViewModuleBindings.kt | 17 ++++++ app/src/main/res/layout/activity_main.xml | 35 +++++++----- 35 files changed, 518 insertions(+), 160 deletions(-) create mode 100644 app/src/main/java/ru/otus/daggerhomework/Event.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/FragmentReceiver.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/MainActivity.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/MutableEventObservable.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/ViewModelProducer.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/ViewModelReceiver.kt rename app/src/main/java/ru/otus/daggerhomework/{ => app}/App.kt (72%) rename app/src/main/java/ru/otus/daggerhomework/{di/app => app/di}/ApplicationComponent.kt (59%) rename app/src/main/java/ru/otus/daggerhomework/{di => }/common/ActivityScope.kt (72%) create mode 100644 app/src/main/java/ru/otus/daggerhomework/common/FragmentScope.kt rename app/src/main/java/ru/otus/daggerhomework/{di/common/NeedInicializeException(.kt => common/NeedInitializeException.kt} (67%) create mode 100644 app/src/main/java/ru/otus/daggerhomework/common/ViewModelKey.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/common/ViewModelProviderFactory.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/di/FragmentProducerComponent.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/di/FragmentReceiverComponent.kt delete mode 100644 app/src/main/java/ru/otus/daggerhomework/di/mainActivity/MainActivityComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/main/MainActivity.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/main/di/MainActivityComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/main/di/MainActivityModule.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/producer/FragmentProducer.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/producer/ViewModelProducer.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/producer/di/FragmentProducerComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/producer/di/ProducerBindings.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/producer/di/ProducerDependency.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/receiver/FragmentReceiver.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/receiver/ViewModelReceiver.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/receiver/di/FragmentReceiverComponent.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/receiver/di/ReceiverDependency.kt create mode 100644 app/src/main/java/ru/otus/daggerhomework/receiver/di/ReceiverViewModuleBindings.kt diff --git a/app/build.gradle b/app/build.gradle index a5609bb9..c99e8410 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,14 +4,18 @@ plugins { id 'kotlin-kapt' } +kapt { + correctErrorTypes true +} + android { - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion "30.0.3" defaultConfig { applicationId "ru.otus.daggerhomework" minSdkVersion 23 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 1 versionName "1.0" @@ -41,4 +45,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.0' implementation 'com.google.dagger:dagger:2.38.1' kapt 'com.google.dagger:dagger-compiler:2.38.1' + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.4.1" + implementation "androidx.fragment:fragment-ktx:1.4.1" } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1177443b..69b2363e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,14 +3,15 @@ package="ru.otus.daggerhomework"> - + diff --git a/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt b/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt index a9e25a27..f0ca940b 100644 --- a/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt +++ b/app/src/main/java/ru/otus/daggerhomework/ColorGenerator.kt @@ -4,6 +4,7 @@ import android.graphics.Color import androidx.annotation.ColorInt import androidx.annotation.ColorRes import java.util.* +import javax.inject.Inject interface ColorGenerator { @@ -11,7 +12,7 @@ interface ColorGenerator { fun generateColor(): Int } -class ColorGeneratorImpl : ColorGenerator { +class ColorGeneratorImpl @Inject constructor() : ColorGenerator { override fun generateColor(): Int { val rnd = Random() diff --git a/app/src/main/java/ru/otus/daggerhomework/Event.kt b/app/src/main/java/ru/otus/daggerhomework/Event.kt new file mode 100644 index 00000000..cdd271b6 --- /dev/null +++ b/app/src/main/java/ru/otus/daggerhomework/Event.kt @@ -0,0 +1,5 @@ +package ru.otus.daggerhomework + +interface Event { + class ShowColor(val color: Int) : Event +} \ No newline at end of file diff --git a/app/src/main/java/ru/otus/daggerhomework/EventObservable.kt b/app/src/main/java/ru/otus/daggerhomework/EventObservable.kt index 5664cd81..8ae7bc32 100644 --- a/app/src/main/java/ru/otus/daggerhomework/EventObservable.kt +++ b/app/src/main/java/ru/otus/daggerhomework/EventObservable.kt @@ -1,11 +1,7 @@ package ru.otus.daggerhomework -import ru.otus.daggerhomework.di.common.ActivityScope -import javax.inject.Inject - -@ActivityScope -class EventObservable @Inject constructor() { - - +import kotlinx.coroutines.flow.SharedFlow +interface EventObservable { + val events: SharedFlow } \ No newline at end of file diff --git a/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt b/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt deleted file mode 100644 index 00dd10dc..00000000 --- a/app/src/main/java/ru/otus/daggerhomework/FragmentProducer.kt +++ /dev/null @@ -1,26 +0,0 @@ -package ru.otus.daggerhomework - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.Button -import androidx.fragment.app.Fragment - -class FragmentProducer : Fragment() { - - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_a, container, true) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - view.findViewById