Skip to content

Commit 0460343

Browse files
Merge pull request #13 from valueadd-poland/feature/handle-instance-state-split-implementation
refactor: split implementation of mvi fragment with save instance state
2 parents b4f07c2 + 6bd56e3 commit 0460343

Some content is hidden

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

47 files changed

+243
-73
lines changed

.circleci/config.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ jobs:
1010
- checkout
1111
- restore_cache:
1212
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
13+
- run:
14+
name: Create empty local properties
15+
command: touch local.properties
1316
- run:
1417
name: Download Dependencies
1518
command: ./gradlew androidDependencies

README.md

Lines changed: 2 additions & 2 deletions

app/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ android {
4646
dependencies {
4747

4848
// Implement base library
49-
implementation project(':mvi-valueadd')
49+
implementation project(':mvi')
5050

5151
// Annotation Processor
5252
kapt deps.di.toothpick_compiler
@@ -82,4 +82,5 @@ dependencies {
8282
implementation deps.androidx.material
8383
implementation deps.androidx.multidex
8484
implementation deps.androidx.annotation
85+
implementation "androidx.lifecycle:lifecycle-common:2.2.0"
8586
}

app/src/main/java/pl/valueadd/mvi/example/presentation/base/AbstractBackMviFragment.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,26 @@ import android.os.Bundle
44
import androidx.annotation.LayoutRes
55
import pl.valueadd.mvi.example.utility.dependencyinjection.DependencyUtil
66
import pl.valueadd.mvi.fragment.back.BackMviFragment
7+
import pl.valueadd.mvi.fragment.delegate.fragment.MviFragmentSaveInstanceStateDelegateImpl
78
import pl.valueadd.mvi.fragment.mvi.BaseMviPresenter
89
import pl.valueadd.mvi.fragment.mvi.IBaseView
910
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
1011

1112
abstract class AbstractBackMviFragment<V : IBaseView<VS, *>, VS : IBaseViewState, VI : IBaseView.IBaseIntent, P : BaseMviPresenter<VS, *, *, V>>(@LayoutRes layoutId: Int) :
1213
BackMviFragment<V, VS, VI, P>(layoutId) {
1314

15+
protected val restoredViewState: VS?
16+
get() = mviDelegate.restoredViewState
17+
18+
@Suppress("UNCHECKED_CAST")
19+
override val mviDelegate: MviFragmentSaveInstanceStateDelegateImpl<V, VS>
20+
by lazy {
21+
MviFragmentSaveInstanceStateDelegateImpl(
22+
this as V,
23+
presenter
24+
)
25+
}
26+
1427
override fun onCreate(savedInstanceState: Bundle?) {
1528
DependencyUtil.inject(requireActivity(), this)
1629
super.onCreate(savedInstanceState)

app/src/main/java/pl/valueadd/mvi/example/presentation/base/AbstractBaseMviFragment.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,26 @@ import android.os.Bundle
44
import androidx.annotation.LayoutRes
55
import pl.valueadd.mvi.example.utility.dependencyinjection.DependencyUtil
66
import pl.valueadd.mvi.fragment.base.BaseMviFragment
7+
import pl.valueadd.mvi.fragment.delegate.fragment.MviFragmentSaveInstanceStateDelegateImpl
78
import pl.valueadd.mvi.fragment.mvi.BaseMviPresenter
89
import pl.valueadd.mvi.fragment.mvi.IBaseView
910
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
1011

1112
abstract class AbstractBaseMviFragment<V : IBaseView<VS, *>, VS : IBaseViewState, VI : IBaseView.IBaseIntent, P : BaseMviPresenter<VS, *, *, V>>(@LayoutRes layoutId: Int) :
1213
BaseMviFragment<V, VS, VI, P>(layoutId) {
1314

15+
protected val restoredViewState: VS?
16+
get() = mviDelegate.restoredViewState
17+
18+
@Suppress("UNCHECKED_CAST")
19+
override val mviDelegate: MviFragmentSaveInstanceStateDelegateImpl<V, VS>
20+
by lazy {
21+
MviFragmentSaveInstanceStateDelegateImpl(
22+
this as V,
23+
presenter
24+
)
25+
}
26+
1427
override fun onCreate(savedInstanceState: Bundle?) {
1528
DependencyUtil.inject(requireActivity(), this)
1629
super.onCreate(savedInstanceState)

app/src/main/java/pl/valueadd/mvi/example/presentation/main/first/FirstFragment.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ class FirstFragment :
2424
@Inject
2525
override lateinit var presenter: FirstPresenter
2626

27-
override val shouldSaveViewStateInSavedInstanceState = true
28-
2927
private val buttonDelay
3028
by lazy { resources.getInteger(R.integer.button_delay_100).toLong() }
3129

build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ buildscript {
99
dependencies {
1010
classpath deps.build.android_gradle_plugin
1111
classpath deps.build.kotlin_gradle_plugin
12-
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.3.2.0"
12+
classpath deps.build.junit5_runner
13+
classpath deps.build.android_maven
14+
classpath deps.build.bintray
1315
}
1416
}
1517

dependencies.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ versions.fragmentation = "1.0.1"
6363
versions.material_progress_bar = "1.6.1"
6464
versions.fast_adapter = "4.0.1"
6565
versions.mockk = "1.9.3"
66+
versions.junit5_runner = "1.3.2.0"
67+
versions.android_maven = "1.4.1"
68+
versions.bintray = "1.7.3"
6669
deps.versions = versions
6770
ext.versions = versions
6871

@@ -75,6 +78,9 @@ build.fabric = "io.fabric.tools:gradle:$versions.fabric"
7578
build.google_services_plugin = "com.google.gms:google-services:$versions.google_plugin"
7679
build.kotlin_gradle_plugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin"
7780
build.realm_gradle_plugin = "io.realm:realm-gradle-plugin:$versions.realm"
81+
build.junit5_runner = "de.mannodermaus.gradle.plugins:android-junit5:$versions.junit5_runner"
82+
build.android_maven = "com.github.dcendents:android-maven-gradle-plugin:$versions.android_maven"
83+
build.bintray = "com.jfrog.bintray.gradle:gradle-bintray-plugin:$versions.bintray"
7884
deps.build = build
7985

8086
/**

mvi-valueadd/src/main/java/pl/valueadd/mvi/fragment/delegate/fragment/MviFragmentDelegateImpl.kt

Lines changed: 0 additions & 44 deletions
This file was deleted.
File renamed without changes.

0 commit comments

Comments
 (0)