From 00bdd48a4a20f8cfb5b9c06a7001d69e3f7ec202 Mon Sep 17 00:00:00 2001 From: rhenwinch Date: Sat, 17 Feb 2024 01:51:49 +0800 Subject: [PATCH] fix: Multiple backstack not working. --- .../com/flixclusive/mobile/MobileApp.kt | 19 ++++++++++++++----- .../com/flixclusive/util/NavigationHelper.kt | 17 ----------------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/app/src/main/kotlin/com/flixclusive/mobile/MobileApp.kt b/app/src/main/kotlin/com/flixclusive/mobile/MobileApp.kt index c787466e..23be1a2d 100644 --- a/app/src/main/kotlin/com/flixclusive/mobile/MobileApp.kt +++ b/app/src/main/kotlin/com/flixclusive/mobile/MobileApp.kt @@ -39,9 +39,10 @@ import com.flixclusive.model.provider.SourceDataState import com.flixclusive.util.AppNavHost import com.flixclusive.util.currentScreenAsState import com.flixclusive.util.navigateIfResumed -import com.flixclusive.util.navigateSingleTopTo import com.ramcosta.composedestinations.dynamic.within +import com.ramcosta.composedestinations.navigation.navigate import com.ramcosta.composedestinations.utils.currentDestinationFlow +import com.ramcosta.composedestinations.utils.startDestination import kotlinx.coroutines.launch import kotlin.system.exitProcess import com.flixclusive.core.util.R as UtilR @@ -141,10 +142,18 @@ internal fun MobileActivity.MobileApp( navController.run { val isPoppingToRoot = screen == currentNavGraph - navigateSingleTopTo( - direction = screen, - isPoppingToRoot = isPoppingToRoot - ) + navigate(screen) { + if (isPoppingToRoot) { + popUpTo(screen.startRoute.route) + } else { + popUpTo(MobileNavGraphs.home.startDestination.route) { + saveState = true + } + } + + launchSingleTop = true + restoreState = true + } } } ) diff --git a/app/src/main/kotlin/com/flixclusive/util/NavigationHelper.kt b/app/src/main/kotlin/com/flixclusive/util/NavigationHelper.kt index cdded257..9fdbd367 100644 --- a/app/src/main/kotlin/com/flixclusive/util/NavigationHelper.kt +++ b/app/src/main/kotlin/com/flixclusive/util/NavigationHelper.kt @@ -18,7 +18,6 @@ import androidx.navigation.NavController import androidx.navigation.NavDestination import androidx.navigation.NavDestination.Companion.hierarchy import androidx.navigation.NavGraph -import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController import androidx.navigation.NavOptionsBuilder import com.flixclusive.ROOT @@ -37,22 +36,6 @@ import com.ramcosta.composedestinations.navigation.navigate import com.ramcosta.composedestinations.spec.Direction import com.ramcosta.composedestinations.spec.NavGraphSpec -internal fun NavHostController.navigateSingleTopTo( - direction: NavGraphSpec, - isPoppingToRoot: Boolean = false, -) = navigate(direction) { - if (isPoppingToRoot) { - popUpTo(direction.startRoute.route) - } else { - popUpTo(graph.findStartDestination().id) { - saveState = true - } - } - - launchSingleTop = true - restoreState = true -} - private fun NavBackStackEntry.lifecycleIsResumed() = lifecycle.currentState == Lifecycle.State.RESUMED