Move injection of dependencies inside onAttach method

This commit is contained in:
Kirill Nayduik 2021-08-16 12:20:42 +12:00
parent 7e079554f8
commit 02c3686002
2 changed files with 2 additions and 32 deletions

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

@ -27,15 +27,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 +39,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 +61,6 @@ abstract class FlowFragment<TComponent> : Fragment(R.layout.fragment_flow) {
private val exitRouterOnBackPressed = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
componentHolder.destroy()
router.exit()
}
}