Updated on 2026-08-14

This commit is contained in:
Tangem 2025-04-29 20:36:10 +07:00
parent 68efa8e30c
commit 46385fa3f0
10 changed files with 249 additions and 2 deletions

View file

@ -17,7 +17,8 @@ import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat.startActivity
import com.arkivanov.decompose.ExperimentalDecomposeApi
import com.arkivanov.decompose.extensions.compose.stack.Children
import com.arkivanov.decompose.extensions.compose.stack.animation.*
import com.arkivanov.decompose.extensions.compose.stack.animation.fade
import com.arkivanov.decompose.extensions.compose.stack.animation.stackAnimation
import com.arkivanov.decompose.router.stack.ChildStack
import com.arkivanov.decompose.value.Value
import com.tangem.common.routing.AppRoute
@ -33,6 +34,7 @@ import com.tangem.tap.routing.component.RoutingComponent
@Composable
internal fun RootContent(
stack: Value<ChildStack<AppRoute, RoutingComponent.Child>>,
wcContent: @Composable (modifier: Modifier) -> Unit,
uiDependencies: UiDependencies,
modifier: Modifier = Modifier,
) {
@ -69,6 +71,8 @@ internal fun RootContent(
}
}
wcContent(Modifier.fillMaxSize())
TangemSnackbarHost(
modifier = Modifier
.align(Alignment.BottomCenter)

View file

@ -15,6 +15,7 @@ import com.tangem.core.ui.UiDependencies
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.message.SnackbarMessage
import com.tangem.features.walletconnect.components.WcRoutingComponent
import com.tangem.tap.common.SnackbarHandler
import com.tangem.tap.routing.RootContent
import com.tangem.tap.routing.component.RoutingComponent
@ -32,10 +33,16 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
private val childFactory: ChildFactory,
private val appRouterConfig: AppRouterConfig,
private val uiDependencies: UiDependencies,
private val wcRoutingComponentFactory: WcRoutingComponent.Factory,
) : RoutingComponent,
AppComponentContext by context,
SnackbarHandler {
private val wcRoutingComponent: WcRoutingComponent by lazy {
wcRoutingComponentFactory
.create(childByContext(componentContext = this), params = Unit)
}
private val stack: Value<ChildStack<AppRoute, Child>> = childStack(
source = navigationProvider.getOrCreateTyped(),
initialStack = { getInitialStackOrInit() },
@ -53,7 +60,7 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
stack.subscribe(lifecycle) { stack ->
val stackItems = stack.items.map { it.configuration }
wcRoutingComponent.onAppRouteChange(stack.active.configuration)
if (appRouterConfig.stack != stackItems) {
appRouterConfig.stack = stackItems
}
@ -66,6 +73,7 @@ internal class DefaultRoutingComponent @AssistedInject constructor(
modifier = modifier,
stack = stack,
uiDependencies = uiDependencies,
wcContent = { wcRoutingComponent.Content(it) },
)
}