diff --git a/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt index 14dc80a79..88398424d 100644 --- a/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt @@ -98,8 +98,8 @@ abstract class BaseViewModel( _viewEvents.postValue(this) } - fun NavDirections.navigate() { - _viewEvents.postValue(NavigationEvent(this)) + fun NavDirections.navigate(pop: Boolean = false) { + _viewEvents.postValue(NavigationEvent(this, pop)) } } diff --git a/app/src/main/java/com/topjohnwu/magisk/events/ViewEvents.kt b/app/src/main/java/com/topjohnwu/magisk/events/ViewEvents.kt index 70d399e50..023d952b8 100644 --- a/app/src/main/java/com/topjohnwu/magisk/events/ViewEvents.kt +++ b/app/src/main/java/com/topjohnwu/magisk/events/ViewEvents.kt @@ -62,10 +62,12 @@ class MagiskInstallFileEvent( } class NavigationEvent( - private val directions: NavDirections + private val directions: NavDirections, + private val pop: Boolean ) : ViewEvent(), ActivityExecutor { override fun invoke(activity: BaseUIActivity<*, *>) { (activity as? BaseUIActivity<*, *>)?.apply { + if (pop) navigation?.popBackStack() directions.navigate() } } diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt index 928582082..a5fe9aceb 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallViewModel.kt @@ -84,9 +84,9 @@ class InstallViewModel( fun install() { when (method) { - R.id.method_patch -> FlashFragment.patch(data!!).navigate() - R.id.method_direct -> FlashFragment.flash(false).navigate() - R.id.method_inactive_slot -> FlashFragment.flash(true).navigate() + R.id.method_patch -> FlashFragment.patch(data!!).navigate(true) + R.id.method_direct -> FlashFragment.flash(false).navigate(true) + R.id.method_inactive_slot -> FlashFragment.flash(true).navigate(true) else -> error("Unknown value") } state = State.LOADING diff --git a/app/src/main/res/navigation/main.xml b/app/src/main/res/navigation/main.xml index 5e2680680..2a7a5a701 100644 --- a/app/src/main/res/navigation/main.xml +++ b/app/src/main/res/navigation/main.xml @@ -150,7 +150,6 @@ app:enterAnim="@anim/fragment_enter" app:exitAnim="@anim/fragment_exit" app:popEnterAnim="@anim/fragment_enter_pop" - app:popExitAnim="@anim/fragment_exit_pop" - app:popUpTo="@id/homeFragment" /> + app:popExitAnim="@anim/fragment_exit_pop" />