Skip to content

Commit de99448

Browse files
committed
Example2 change to MVVM
1 parent 4e207f3 commit de99448

File tree

15 files changed

+126
-140
lines changed

15 files changed

+126
-140
lines changed
Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
package ru.bis.basearchitectureexample
22

3-
import android.content.Context
43
import ru.bis.basearchitectureexample.di.components.AppComponent
54
import ru.bis.basearchitectureexample.di.components.DaggerAppComponent
65
import ru.bis.example1.di.components.Example1Component
7-
import ru.bis.example1.di.modules.ViewModelModule
8-
import ru.bis.example1.di.modules.CacheModule as Example1CacheModule
96
import ru.bis.example2.di.components.Example2Component
10-
import ru.bis.example2.di.provides.Example2ComponentProvider
7+
import ru.bis.example2.di.modules.CacheModule as Example2CacheModule
8+
import ru.bis.example1.di.modules.CacheModule as Example1CacheModule
119
import ru.sir.presentation.base.BaseApplication
1210
import ru.sir.presentation.base.BaseDaggerComponent
1311
import java.lang.IllegalArgumentException
1412

15-
class App : BaseApplication(), Example2ComponentProvider {
13+
class App : BaseApplication() {
1614
companion object {
1715
lateinit var appComponent: AppComponent
18-
lateinit var appContext: Context
19-
private var example2Component: Example2Component? = null
2016
}
2117

2218
override fun onCreate() {
2319
super.onCreate()
24-
25-
appContext = applicationContext
2620
initAppComponent()
2721
}
2822

@@ -33,14 +27,8 @@ class App : BaseApplication(), Example2ComponentProvider {
3327
override fun provideComponent(type: Class<out BaseDaggerComponent>): BaseDaggerComponent {
3428
return when(type) {
3529
Example1Component::class.java -> appComponent.createExample1Component().create(Example1CacheModule(this))
36-
//Example2Component::class.java -> appComponent.createExample2Component().create()
30+
Example2Component::class.java -> appComponent.createExample2Component().create(Example2CacheModule(this))
3731
else -> throw IllegalArgumentException("Dagger component not provided: $type")
3832
}
3933
}
40-
41-
override fun provideExample2Component(): Example2Component {
42-
if (example2Component == null)
43-
example2Component = appComponent.createExample2Component().create()
44-
return example2Component!!
45-
}
4634
}

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,7 +3,7 @@ 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.Example2
6+
import ru.bis.example2.ui.fragments.Example2
77
import ru.bis.example1.ui.fragments.Example1
88

99
class MainActivity : AppCompatActivity() {

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

Lines changed: 0 additions & 54 deletions
This file was deleted.
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
<resources>
22
<string name="app_name">BaseArchitectureExample</string>
3-
<string name="data_text">Data</string>
4-
<string name="example2_title">Example 2 Fragment</string>
53
</resources>

features/example2/build.gradle

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ 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+
2635
compileOptions {
2736
sourceCompatibility JavaVersion.VERSION_1_8
2837
targetCompatibility JavaVersion.VERSION_1_8
@@ -35,13 +44,15 @@ android {
3544
apply from: "$rootDir/deps/deps_versions.gradle"
3645

3746
dependencies {
47+
api project(path: ':entities:presentation')
3848
implementation fileTree(dir: "libs", include: ["*.jar"])
3949
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
4050
implementation 'androidx.core:core-ktx:1.3.2'
4151
implementation 'androidx.appcompat:appcompat:1.2.0'
4252

4353
api project(path: ':features:example2_api')
4454

55+
implementation constraintLayout
4556
implementation dagger
4657
kapt daggerCompiler
4758
}
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package ru.bis.example2.di.components
22

33
import dagger.Subcomponent
4-
import ru.bis.example2.di.modules.DataModule
5-
import ru.bis.example2.di.modules.DomainModule
6-
import ru.bis.example2.di.modules.PresentationModule
7-
import ru.bis.example2.di.modules.RemoteModule
8-
import ru.bis.example2.presentation.interfaces.Example2ViewContract
4+
import ru.bis.example2.di.modules.*
5+
import ru.bis.example2.ui.fragments.Example2
6+
import ru.sir.presentation.base.BaseDaggerComponent
97
import javax.inject.Singleton
108

119
@Singleton
12-
@Subcomponent(modules = [PresentationModule::class, DomainModule::class, DataModule::class, RemoteModule::class])
13-
interface Example2Component {
10+
@Subcomponent(modules = [ViewModelModule::class, DomainModule::class, DataModule::class, RemoteModule::class, CacheModule::class])
11+
interface Example2Component : BaseDaggerComponent {
1412

1513
@Subcomponent.Factory
1614
interface Factory {
17-
fun create(): Example2Component
15+
fun create(cacheModule: CacheModule): Example2Component
1816
}
1917

20-
fun getExample2Presenter(): Example2ViewContract.Presenter
18+
fun inject(fragment: Example2)
2119
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package ru.bis.example2.di.modules
2+
3+
import android.app.Application
4+
import android.content.Context
5+
import dagger.Module
6+
import dagger.Provides
7+
import ru.sir.presentation.base.BaseApplication
8+
9+
@Module
10+
class CacheModule(private val context: Context) {
11+
@Provides
12+
fun provideAppContext(): Context = context
13+
14+
@Provides
15+
fun provideApplication(): Application = context as BaseApplication
16+
}

features/example2/src/main/java/ru/bis/example2/di/modules/PresentationModule.kt

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package ru.bis.example2.di.modules
2+
3+
import androidx.lifecycle.ViewModel
4+
import androidx.lifecycle.ViewModelProvider
5+
import dagger.Binds
6+
import dagger.Module
7+
import dagger.multibindings.IntoMap
8+
import ru.bis.example2.view_models.Example2ViewModel
9+
import ru.sir.presentation.annotations.ViewModelKey
10+
import ru.sir.presentation.factories.ViewModelFactory
11+
12+
@Module
13+
abstract class ViewModelModule {
14+
15+
@Binds
16+
abstract fun bindViewModuleFactory(factory: ViewModelFactory): ViewModelProvider.Factory
17+
18+
@Binds
19+
@IntoMap
20+
@ViewModelKey(Example2ViewModel::class)
21+
abstract fun bindExample2ViewModule(model: Example2ViewModel): ViewModel
22+
}

features/example2/src/main/java/ru/bis/example2/di/provides/Example2ComponentProvider.kt

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)