Skip to content

Commit d367612

Browse files
authored
Merge pull request #2 from Kirito398/MVVM
Mvvm
2 parents 6ea0d3a + 9c96fad commit d367612

File tree

124 files changed

+1448
-379
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+1448
-379
lines changed

.idea/codeStyles/Project.xml

Lines changed: 0 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/compiler.xml

Lines changed: 9 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 18 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"
@@ -38,5 +54,6 @@ dependencies {
3854
implementation project(path: ':features:example1')
3955

4056
implementation dagger
57+
implementation project(path: ':features:recycler_view_example')
4158
kapt daggerCompiler
4259
}
Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,37 @@
11
package ru.bis.basearchitectureexample
22

3-
import android.app.Application
4-
import android.content.Context
53
import ru.bis.basearchitectureexample.di.components.AppComponent
64
import ru.bis.basearchitectureexample.di.components.DaggerAppComponent
75
import ru.bis.example1.di.components.Example1Component
8-
import ru.bis.example1.di.modules.CacheModule as Example1CacheModule
9-
import ru.bis.example1.di.provides.Example1ComponentProvider
106
import ru.bis.example2.di.components.Example2Component
11-
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
9+
import ru.sir.presentation.base.BaseApplication
10+
import ru.sir.presentation.base.BaseDaggerComponent
11+
import ru.sir.recycler_view_example.di.components.RecyclerViewExampleComponent
12+
import ru.sir.recycler_view_example.di.modules.CacheModule as RecyclerViewExampleCacheModule
13+
import java.lang.IllegalArgumentException
1214

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

2120
override fun onCreate() {
2221
super.onCreate()
23-
24-
appContext = applicationContext
2522
initAppComponent()
2623
}
2724

2825
private fun initAppComponent() {
2926
appComponent = DaggerAppComponent.create()
3027
}
3128

32-
override fun provideExample1Component(): Example1Component {
33-
if (example1Component == null)
34-
example1Component = appComponent.createExample1Component().create(Example1CacheModule(this))
35-
return example1Component!!
36-
}
37-
38-
override fun provideExample2Component(): Example2Component {
39-
if (example2Component == null)
40-
example2Component = appComponent.createExample2Component().create()
41-
return example2Component!!
29+
override fun provideComponent(type: Class<out BaseDaggerComponent>): BaseDaggerComponent {
30+
return when(type) {
31+
Example1Component::class.java -> appComponent.createExample1Component().create(Example1CacheModule(this))
32+
Example2Component::class.java -> appComponent.createExample2Component().create(Example2CacheModule(this))
33+
RecyclerViewExampleComponent::class.java -> appComponent.createRecyclerViewExampleComponent().create(RecyclerViewExampleCacheModule(this))
34+
else -> throw IllegalArgumentException("Dagger component not provided: $type")
35+
}
4236
}
4337
}

app/src/main/java/ru/bis/basearchitectureexample/di/components/AppComponent.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package ru.bis.basearchitectureexample.di.components
33
import dagger.Component
44
import ru.bis.example1.di.components.Example1Component
55
import ru.bis.example2.di.components.Example2Component
6+
import ru.sir.recycler_view_example.di.components.RecyclerViewExampleComponent
67

78
@Component
89
interface AppComponent {
910
fun createExample1Component(): Example1Component.Factory
1011
fun createExample2Component(): Example2Component.Factory
12+
fun createRecyclerViewExampleComponent(): RecyclerViewExampleComponent.Factory
1113
}
Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
package ru.bis.basearchitectureexample.ui
22

3-
import androidx.appcompat.app.AppCompatActivity
4-
import android.os.Bundle
3+
import androidx.navigation.findNavController
4+
import androidx.navigation.ui.NavigationUI
5+
import com.google.android.material.bottomnavigation.BottomNavigationView
56
import ru.bis.basearchitectureexample.R
6-
import ru.bis.basearchitectureexample.ui.fragments.Example1
7-
import ru.bis.basearchitectureexample.ui.fragments.Example2
7+
import ru.bis.example1.ui.fragments.NavActions
8+
import ru.sir.presentation.base.BaseActivity
9+
import ru.sir.presentation.navigation.UiAction
810

9-
class MainActivity : AppCompatActivity() {
10-
override fun onCreate(savedInstanceState: Bundle?) {
11-
super.onCreate(savedInstanceState)
12-
setContentView(R.layout.activity_main)
11+
class MainActivity : BaseActivity() {
12+
override val layoutId: Int = R.layout.activity_main
13+
override fun getNavController() = findNavController(R.id.navHostFragment)
1314

14-
openDefaultFragments()
15+
override fun onActivityCreated() {
16+
val bottomNavigation: BottomNavigationView = findViewById(R.id.navigationView)
17+
NavigationUI.setupWithNavController(bottomNavigation, navigator)
1518
}
1619

17-
private fun openDefaultFragments() {
18-
supportFragmentManager
19-
.beginTransaction()
20-
.replace(R.id.example1Layout, Example1())
21-
.replace(R.id.example2Layout, Example2())
22-
.commit()
20+
override fun navigateTo(action: UiAction) {
21+
when(action.id) {
22+
NavActions.OPEN_EXAMPLE_2 -> { navigator.navigate(R.id.example2) }
23+
}
2324
}
24-
}
25+
}

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

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

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

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

0 commit comments

Comments
 (0)