Updated on 2026-08-14
This commit is contained in:
parent
636c602fcb
commit
cde97de92e
3 changed files with 15 additions and 5 deletions
|
|
@ -315,6 +315,7 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac
|
|||
private fun setRootContent() {
|
||||
val routingComponent = routingComponentFactory.create(
|
||||
context = rootComponentContext,
|
||||
initialStack = null,
|
||||
)
|
||||
|
||||
setContent {
|
||||
|
|
@ -323,8 +324,12 @@ class MainActivity : AppCompatActivity(), SnackbarHandler, ActivityResultCallbac
|
|||
}
|
||||
|
||||
private fun installRouting() {
|
||||
// for now activity is singleTop and after going to ChromeCustomTab it calls onCreate but onDestroy
|
||||
// doesn't calls. It lead to issue that decompose nav stack is not saved in bundle and to restore it
|
||||
// we try to init component with previous stack
|
||||
val routingComponent = routingComponentFactory.create(
|
||||
context = rootComponentContext,
|
||||
initialStack = appRouterConfig.stack,
|
||||
)
|
||||
|
||||
appRouterConfig.routerScope = mainScope
|
||||
|
|
|
|||
|
|
@ -38,6 +38,6 @@ internal interface RoutingComponent : ComposableContentComponent {
|
|||
}
|
||||
|
||||
interface Factory {
|
||||
fun create(context: AppComponentContext): RoutingComponent
|
||||
fun create(context: AppComponentContext, initialStack: List<AppRoute>?): RoutingComponent
|
||||
}
|
||||
}
|
||||
|
|
@ -34,6 +34,7 @@ import dagger.assisted.AssistedInject
|
|||
@Suppress("LongParameterList")
|
||||
internal class DefaultRoutingComponent @AssistedInject constructor(
|
||||
@Assisted context: AppComponentContext,
|
||||
@Assisted val initialStack: List<AppRoute>?,
|
||||
private val childFactory: ChildFactory,
|
||||
private val appRouterConfig: AppRouterConfig,
|
||||
private val uiDependencies: UiDependencies,
|
||||
|
|
@ -46,8 +47,8 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
|
|||
|
||||
override val stack: Value<ChildStack<AppRoute, Child>> = childStack(
|
||||
source = navigationProvider.getOrCreateTyped(),
|
||||
serializer = AppRoute.serializer(),
|
||||
initialConfiguration = getInitialRoute(),
|
||||
initialStack = { getInitialStackOrInit() },
|
||||
serializer = null, // AppRoute.serializer(), // Disabled until Nav refactoring completes
|
||||
handleBackButton = false,
|
||||
childFactory = ::child,
|
||||
)
|
||||
|
|
@ -115,7 +116,11 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
|
|||
}
|
||||
|
||||
// TODO: Find correct initial route here: [REDACTED_JIRA]
|
||||
private fun getInitialRoute(): AppRoute = AppRoute.Initial
|
||||
private fun getInitialStackOrInit(): List<AppRoute> = if (initialStack.isNullOrEmpty()) {
|
||||
listOf(AppRoute.Initial)
|
||||
} else {
|
||||
initialStack
|
||||
}
|
||||
|
||||
private fun child(route: AppRoute, context: ComponentContext): Child {
|
||||
return childFactory.createChild(route) { childByContext(context) }
|
||||
|
|
@ -123,6 +128,6 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
|
|||
|
||||
@AssistedFactory
|
||||
interface Factory : RoutingComponent.Factory {
|
||||
override fun create(context: AppComponentContext): DefaultRoutingComponent
|
||||
override fun create(context: AppComponentContext, initialStack: List<AppRoute>?): DefaultRoutingComponent
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue