Skip to content

Commit 6f1dd56

Browse files
Merge pull request #10 from valueadd-poland/feature/MVI-2-delegation
Feature/mvi 2 delegation
2 parents 189374a + ae0ce96 commit 6f1dd56

File tree

12 files changed

+47
-33
lines changed

12 files changed

+47
-33
lines changed

app/src/main/java/pl/valueadd/mvi/example/presentation/main/about/AboutViewState.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package pl.valueadd.mvi.example.presentation.main.about
22

3-
import kotlinx.android.parcel.Parcelize
43
import pl.valueadd.mvi.fragment.mvi.IBasePartialState
54
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
65

7-
@Parcelize
86
class AboutViewState :
97
IBaseViewState {
108

app/src/main/java/pl/valueadd/mvi/example/presentation/main/account/AccountViewState.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package pl.valueadd.mvi.example.presentation.main.account
22

3-
import kotlinx.android.parcel.Parcelize
43
import org.apache.commons.lang3.StringUtils
54
import pl.valueadd.mvi.fragment.mvi.IBasePartialState
65
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
76

8-
@Parcelize
97
data class AccountViewState(
108
var firstName: String = StringUtils.EMPTY,
119
var surname: String = StringUtils.EMPTY,

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package pl.valueadd.mvi.example.presentation.main.first
22

3-
import kotlinx.android.parcel.Parcelize
43
import org.apache.commons.lang3.StringUtils.EMPTY
54
import org.apache.commons.lang3.math.NumberUtils.INTEGER_ZERO
65
import pl.valueadd.mvi.fragment.mvi.IBasePartialState
76
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
87

9-
@Parcelize
108
data class FirstViewState(
119
val count: Int = INTEGER_ZERO,
1210
val error: String = EMPTY,

app/src/main/java/pl/valueadd/mvi/example/presentation/main/root/RootViewState.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package pl.valueadd.mvi.example.presentation.main.root
22

3-
import kotlinx.android.parcel.Parcelize
43
import pl.valueadd.mvi.fragment.mvi.IBasePartialState
54
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
65

7-
@Parcelize
86
class RootViewState :
97
IBaseViewState {
108

app/src/main/java/pl/valueadd/mvi/example/presentation/main/second/SecondViewState.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package pl.valueadd.mvi.example.presentation.main.second
22

3-
import pl.valueadd.mvi.example.presentation.main.second.item.ExampleItem
4-
import kotlinx.android.parcel.Parcelize
53
import org.apache.commons.lang3.StringUtils.EMPTY
4+
import pl.valueadd.mvi.example.presentation.main.second.item.ExampleItem
65
import pl.valueadd.mvi.fragment.mvi.IBasePartialState
76
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
87

9-
@Parcelize
108
data class SecondViewState(
119
val list: List<ExampleItem> = emptyList(),
1210
val error: String = EMPTY

app/src/main/java/pl/valueadd/mvi/example/presentation/main/third/ThirdViewState.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package pl.valueadd.mvi.example.presentation.main.third
22

3-
import kotlinx.android.parcel.Parcelize
43
import pl.valueadd.mvi.fragment.mvi.IBasePartialState
54
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
65

7-
@Parcelize
86
class ThirdViewState :
97
IBaseViewState {
108

mvi-valueadd/src/main/java/pl/valueadd/mvi/fragment/base/BaseMviFragment.kt

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ import android.view.View
55
import androidx.annotation.LayoutRes
66
import io.reactivex.disposables.CompositeDisposable
77
import io.reactivex.disposables.Disposable
8+
import pl.valueadd.mvi.fragment.delegate.fragment.MviFragmentDelegate
9+
import pl.valueadd.mvi.fragment.delegate.fragment.MviFragmentDelegateImpl
810
import pl.valueadd.mvi.fragment.mvi.BaseMviPresenter
911
import pl.valueadd.mvi.fragment.mvi.IBaseView
1012
import pl.valueadd.mvi.fragment.mvi.IBaseView.IBaseIntent
1113
import pl.valueadd.mvi.fragment.mvi.IBaseViewState
12-
import java.util.UUID
1314

1415
abstract class BaseMviFragment<V : IBaseView<VS, *>, VS : IBaseViewState, VI : IBaseIntent, P : BaseMviPresenter<VS, *, *, V>>(@LayoutRes layoutId: Int) :
1516
BaseFragment(layoutId),
@@ -25,7 +26,11 @@ abstract class BaseMviFragment<V : IBaseView<VS, *>, VS : IBaseViewState, VI : I
2526
protected var disposables: CompositeDisposable =
2627
CompositeDisposable()
2728

28-
private val viewStateKey = "ARG_STATE_VIEW_${UUID.randomUUID()}"
29+
private val mviDelegate: MviFragmentDelegate
30+
by lazy {
31+
@Suppress("UNCHECKED_CAST")
32+
MviFragmentDelegateImpl(this as V, presenter)
33+
}
2934

3035
/* IBaseView */
3136

@@ -43,25 +48,19 @@ abstract class BaseMviFragment<V : IBaseView<VS, *>, VS : IBaseViewState, VI : I
4348

4449
/* Life cycle */
4550

46-
override fun onSaveInstanceState(outState: Bundle) {
47-
super.onSaveInstanceState(outState)
48-
outState.putParcelable(viewStateKey, presenter.currentState)
49-
}
50-
5151
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
5252
super.onViewCreated(view, savedInstanceState)
5353
disposables = CompositeDisposable()
5454
}
5555

56-
@Suppress("UNCHECKED_CAST")
5756
override fun onStart() {
5857
super.onStart()
59-
presenter.attachView(this as V)
58+
mviDelegate.onStart()
6059
}
6160

6261
override fun onStop() {
6362
super.onStop()
64-
presenter.detachView()
63+
mviDelegate.onStop()
6564
}
6665

6766
override fun onDestroyView() {
@@ -71,6 +70,6 @@ abstract class BaseMviFragment<V : IBaseView<VS, *>, VS : IBaseViewState, VI : I
7170

7271
override fun onDestroy() {
7372
super.onDestroy()
74-
presenter.destroy()
73+
mviDelegate.onDestroy()
7574
}
7675
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package pl.valueadd.mvi.fragment.delegate.fragment
2+
3+
interface MviFragmentDelegate {
4+
5+
fun onStart()
6+
7+
fun onStop()
8+
9+
fun onDestroy()
10+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package pl.valueadd.mvi.fragment.delegate.fragment
2+
3+
import pl.valueadd.mvi.fragment.mvi.BaseMviPresenter
4+
import pl.valueadd.mvi.fragment.mvi.IBaseView
5+
6+
class MviFragmentDelegateImpl<V : IBaseView<*, *>>(
7+
private val fragment: V,
8+
private val presenter: BaseMviPresenter<*, *, *, V>
9+
) : MviFragmentDelegate {
10+
11+
override fun onStart() {
12+
presenter.attachView(fragment)
13+
}
14+
15+
override fun onStop() {
16+
presenter.detachView()
17+
}
18+
19+
override fun onDestroy() {
20+
presenter.destroy()
21+
}
22+
}
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
package pl.valueadd.mvi.fragment.mvi
22

3-
import android.os.Parcelable
4-
5-
interface IBaseViewState : Parcelable
3+
interface IBaseViewState

0 commit comments

Comments
 (0)