Merge pull request #209 from TouchInstinct/mvi_deps_fix

Mvi deps fix
This commit is contained in:
Kirill Nayduik 2021-08-16 23:19:08 +12:00 committed by GitHub
commit 28a906c02e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 34 deletions

View File

@ -76,6 +76,10 @@ abstract class MviFragment<NavArgs, State, Action, VM>(
arguments?.putParcelable(INIT_ARGS_KEY, navArgs)
}
protected val navArgs: NavArgs by lazy(mode = LazyThreadSafetyMode.NONE) {
arguments?.getParcelable<NavArgs>(INIT_ARGS_KEY) as NavArgs
}
@CallSuper
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

View File

@ -1,20 +0,0 @@
package ru.touchin.roboswag.navigation_cicerone.flow
import me.vponomarenko.injectionmanager.customlifecycle.StoredComponent
import ru.touchin.roboswag.navigation_base.scopes.FeatureScope
import javax.inject.Inject
@FeatureScope
class ComponentHolder<TComponent> @Inject constructor(){
private var storedComponent: StoredComponent<TComponent>? = null
fun setStoredComponent(storedComponent: StoredComponent<TComponent>) {
this.storedComponent = storedComponent
}
fun destroy() {
storedComponent?.lifecycle?.destroy()
}
}

View File

@ -6,14 +6,12 @@ import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.annotation.IdRes
import androidx.fragment.app.Fragment
import me.vponomarenko.injectionmanager.customlifecycle.StoredComponent
import ru.terrakok.cicerone.Navigator
import ru.terrakok.cicerone.NavigatorHolder
import ru.terrakok.cicerone.Router
import ru.terrakok.cicerone.android.support.SupportAppNavigator
import ru.terrakok.cicerone.android.support.SupportAppScreen
import ru.touchin.mvi_arch.core_nav.R
import ru.touchin.roboswag.navigation_base.scopes.FeatureScope
import ru.touchin.roboswag.navigation_cicerone.CiceroneTuner
import javax.inject.Inject
@ -27,15 +25,8 @@ abstract class FlowFragment<TComponent> : Fragment(R.layout.fragment_flow) {
@FlowNavigation
lateinit var router: Router
@Inject
@FeatureScope
lateinit var componentHolder: ComponentHolder<TComponent>
override fun onAttach(context: Context) {
if (!injectExistedComponent()) {
val storedComponent = injectComponent()
componentHolder.setStoredComponent(storedComponent)
}
injectComponent()
super.onAttach(context)
}
@ -46,9 +37,7 @@ abstract class FlowFragment<TComponent> : Fragment(R.layout.fragment_flow) {
}
}
abstract fun injectComponent(): StoredComponent<TComponent>
abstract fun injectExistedComponent(): Boolean
abstract fun injectComponent()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@ -70,7 +59,6 @@ abstract class FlowFragment<TComponent> : Fragment(R.layout.fragment_flow) {
private val exitRouterOnBackPressed = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
componentHolder.destroy()
router.exit()
}
}