Skip to content

Commit 4e207f3

Browse files
committed
Example1 change to MVVM
1 parent dae9093 commit 4e207f3

File tree

28 files changed

+232
-142
lines changed

28 files changed

+232
-142
lines changed

app/build.gradle

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ android {
99

1010
defaultConfig {
1111
applicationId "ru.bis.basearchitectureexample"
12-
minSdkVersion 19
12+
minSdkVersion 21
1313
targetSdkVersion 30
1414
versionCode 1
1515
versionName "1.0"
@@ -23,6 +23,22 @@ android {
2323
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
2424
}
2525
}
26+
27+
viewBinding {
28+
enabled = true
29+
}
30+
31+
dataBinding {
32+
enabled = true
33+
}
34+
35+
compileOptions {
36+
sourceCompatibility JavaVersion.VERSION_1_8
37+
targetCompatibility JavaVersion.VERSION_1_8
38+
}
39+
kotlinOptions {
40+
jvmTarget = '1.8'
41+
}
2642
}
2743

2844
apply from: "$rootDir/deps/deps_versions.gradle"

app/src/main/java/ru/bis/basearchitectureexample/App.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
package ru.bis.basearchitectureexample
22

3-
import android.app.Application
43
import android.content.Context
54
import ru.bis.basearchitectureexample.di.components.AppComponent
65
import ru.bis.basearchitectureexample.di.components.DaggerAppComponent
76
import ru.bis.example1.di.components.Example1Component
7+
import ru.bis.example1.di.modules.ViewModelModule
88
import ru.bis.example1.di.modules.CacheModule as Example1CacheModule
9-
import ru.bis.example1.di.provides.Example1ComponentProvider
109
import ru.bis.example2.di.components.Example2Component
1110
import ru.bis.example2.di.provides.Example2ComponentProvider
11+
import ru.sir.presentation.base.BaseApplication
12+
import ru.sir.presentation.base.BaseDaggerComponent
13+
import java.lang.IllegalArgumentException
1214

13-
class App : Application(), Example1ComponentProvider, Example2ComponentProvider {
15+
class App : BaseApplication(), Example2ComponentProvider {
1416
companion object {
1517
lateinit var appComponent: AppComponent
1618
lateinit var appContext: Context
17-
private var example1Component: Example1Component? = null
1819
private var example2Component: Example2Component? = null
1920
}
2021

@@ -29,10 +30,12 @@ class App : Application(), Example1ComponentProvider, Example2ComponentProvider
2930
appComponent = DaggerAppComponent.create()
3031
}
3132

32-
override fun provideExample1Component(): Example1Component {
33-
if (example1Component == null)
34-
example1Component = appComponent.createExample1Component().create(Example1CacheModule(this))
35-
return example1Component!!
33+
override fun provideComponent(type: Class<out BaseDaggerComponent>): BaseDaggerComponent {
34+
return when(type) {
35+
Example1Component::class.java -> appComponent.createExample1Component().create(Example1CacheModule(this))
36+
//Example2Component::class.java -> appComponent.createExample2Component().create()
37+
else -> throw IllegalArgumentException("Dagger component not provided: $type")
38+
}
3639
}
3740

3841
override fun provideExample2Component(): Example2Component {

app/src/main/java/ru/bis/basearchitectureexample/ui/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package ru.bis.basearchitectureexample.ui
33
import androidx.appcompat.app.AppCompatActivity
44
import android.os.Bundle
55
import ru.bis.basearchitectureexample.R
6-
import ru.bis.basearchitectureexample.ui.fragments.Example1
76
import ru.bis.basearchitectureexample.ui.fragments.Example2
7+
import ru.bis.example1.ui.fragments.Example1
88

99
class MainActivity : AppCompatActivity() {
1010
override fun onCreate(savedInstanceState: Bundle?) {

app/src/main/java/ru/bis/basearchitectureexample/ui/fragments/Example1.kt

Lines changed: 0 additions & 49 deletions
This file was deleted.
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
<resources>
22
<string name="app_name">BaseArchitectureExample</string>
33
<string name="data_text">Data</string>
4-
<string name="example1_title">Example 1 Fragment</string>
54
<string name="example2_title">Example 2 Fragment</string>
6-
<string name="load_data_failed">Load data from cache failed!</string>
75
</resources>

deps/deps_versions.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ ext {
1010
retrofitCoroutinesAdapterVersion = '0.9.2'
1111
okHttpVersion = '3.12.8'
1212
okHttpLoggingInterceptorVersion = '3.12.8'
13-
constraintLayoutVersion = '1.1.3'
13+
constraintLayoutVersion = '2.0.4'
1414
circularProgressBarVersion = '3.0.3'
15-
daggerVersion = '2.23.1'
15+
daggerVersion = '2.27'
1616
recyclerViewVersion = '1.1.0'
1717
speedViewVersion = '1.5.3'
1818
materialVersion = '1.2.0'

entities/data/build.gradle

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ android {
2323
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
2424
}
2525
}
26+
compileOptions {
27+
sourceCompatibility JavaVersion.VERSION_1_8
28+
targetCompatibility JavaVersion.VERSION_1_8
29+
}
30+
kotlinOptions {
31+
jvmTarget = '1.8'
32+
}
2633
}
2734

2835
apply from: "$rootDir/deps/deps_versions.gradle"

entities/presentation/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,7 @@ dependencies {
5252

5353
implementation lifecycleExtensions
5454
annotationProcessor lifecycleCompiler
55+
56+
implementation dagger
57+
kapt daggerCompiler
5558
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package ru.sir.presentation.annotations
2+
3+
import androidx.lifecycle.ViewModel
4+
import dagger.MapKey
5+
import kotlin.reflect.KClass
6+
7+
@MapKey
8+
annotation class ViewModelKey(val value: KClass<out ViewModel>)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package ru.sir.presentation.base
2+
3+
import android.app.Application
4+
5+
abstract class BaseApplication : Application() {
6+
val components = mutableMapOf<Class<out BaseDaggerComponent>, BaseDaggerComponent>()
7+
8+
inline fun <reified T : BaseDaggerComponent> getComponent(): T {
9+
if (components[T::class.java] == null)
10+
components[T::class.java] = provideComponent(T::class.java)
11+
return components[T::class.java] as T
12+
}
13+
14+
abstract fun provideComponent(type: Class<out BaseDaggerComponent>): BaseDaggerComponent
15+
}

0 commit comments

Comments
 (0)