From cde97de92e4b2e82b518f6a095af56eaba2c9136 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 5 Mar 2025 13:46:52 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/MainActivity.kt | 5 +++++ .../tap/routing/component/RoutingComponent.kt | 2 +- .../component/impl/DefaultRoutingComponent.kt | 13 +++++++++---- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/MainActivity.kt b/app/src/main/java/com/tangem/tap/MainActivity.kt index 2ae886e907..ed2a3f63b6 100644 --- a/app/src/main/java/com/tangem/tap/MainActivity.kt +++ b/app/src/main/java/com/tangem/tap/MainActivity.kt @@ -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 diff --git a/app/src/main/java/com/tangem/tap/routing/component/RoutingComponent.kt b/app/src/main/java/com/tangem/tap/routing/component/RoutingComponent.kt index 97fa1777e1..9709e18553 100644 --- a/app/src/main/java/com/tangem/tap/routing/component/RoutingComponent.kt +++ b/app/src/main/java/com/tangem/tap/routing/component/RoutingComponent.kt @@ -38,6 +38,6 @@ internal interface RoutingComponent : ComposableContentComponent { } interface Factory { - fun create(context: AppComponentContext): RoutingComponent + fun create(context: AppComponentContext, initialStack: List?): RoutingComponent } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/routing/component/impl/DefaultRoutingComponent.kt b/app/src/main/java/com/tangem/tap/routing/component/impl/DefaultRoutingComponent.kt index 2f709d7943..adde5d9894 100644 --- a/app/src/main/java/com/tangem/tap/routing/component/impl/DefaultRoutingComponent.kt +++ b/app/src/main/java/com/tangem/tap/routing/component/impl/DefaultRoutingComponent.kt @@ -34,6 +34,7 @@ import dagger.assisted.AssistedInject @Suppress("LongParameterList") internal class DefaultRoutingComponent @AssistedInject constructor( @Assisted context: AppComponentContext, + @Assisted val initialStack: List?, 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( 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 = 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?): DefaultRoutingComponent } } \ No newline at end of file