Merge pull request #155 from TouchInstinct/feature/MviFragment-back-navigation

addOnBackPressedCallback
This commit is contained in:
RationalEgoism 2020-08-28 16:42:19 +03:00 committed by GitHub
commit 88e0595951
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 0 deletions

View File

@ -3,6 +3,7 @@ package ru.touchin.roboswag.mvi_arch.core
import android.os.Bundle
import android.os.Parcelable
import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.annotation.CallSuper
import androidx.annotation.LayoutRes
import androidx.annotation.MainThread
@ -103,6 +104,18 @@ abstract class MviFragment<NavArgs, State, Action, VM>(
viewModel.dispatchAction(action)
}
protected fun addOnBackPressedCallback(actionProvider: () -> Action) {
addOnBackPressedCallback(actionProvider.invoke())
}
protected fun addOnBackPressedCallback(action: Action) {
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
dispatchAction(action)
}
})
}
/**
* Lazily provides view model of this screen with transmitted arguments if exist.
*