From abb83c9e02170010a4912c7639891504fcbe51f7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 20 Dec 2024 16:16:45 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/routing/RootContent.kt | 57 ++++++++++++++----- .../component/impl/DefaultRoutingComponent.kt | 4 +- 2 files changed, 44 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/routing/RootContent.kt b/app/src/main/java/com/tangem/tap/routing/RootContent.kt index d33b9ac578..d0640e59aa 100644 --- a/app/src/main/java/com/tangem/tap/routing/RootContent.kt +++ b/app/src/main/java/com/tangem/tap/routing/RootContent.kt @@ -3,15 +3,22 @@ package com.tangem.tap.routing import android.app.Activity import android.os.Bundle import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp import androidx.core.content.ContextCompat.startActivity import com.arkivanov.decompose.extensions.compose.jetpack.stack.Children import com.arkivanov.decompose.router.stack.ChildStack import com.tangem.common.routing.AppRoute import com.tangem.core.ui.UiDependencies +import com.tangem.core.ui.components.snackbar.TangemSnackbarHost +import com.tangem.core.ui.message.EventMessageEffect +import com.tangem.core.ui.res.LocalSnackbarHostState import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.utils.WindowInsetsZero import com.tangem.tap.routing.component.RoutingComponent @Composable @@ -26,22 +33,42 @@ internal fun RootContent( activity = context as Activity, uiDependencies = uiDependencies, ) { - Children( + val snackbarHostState = LocalSnackbarHostState.current + + Scaffold( modifier = modifier, - stack = stack, - ) { child -> - when (val instance = child.instance) { - is RoutingComponent.Child.Initial -> Unit - is RoutingComponent.Child.ComposableComponent -> { - instance.component.Content(Modifier.fillMaxSize()) + containerColor = TangemTheme.colors.background.primary, + snackbarHost = { + TangemSnackbarHost( + modifier = Modifier.padding(all = 16.dp), + hostState = snackbarHostState, + ) + }, + contentWindowInsets = WindowInsetsZero, + content = { paddingValues -> + Children( + modifier = Modifier.padding(paddingValues), + stack = stack, + ) { child -> + when (val instance = child.instance) { + is RoutingComponent.Child.Initial -> Unit + is RoutingComponent.Child.ComposableComponent -> { + instance.component.Content(Modifier.fillMaxSize()) + } + is RoutingComponent.Child.LegacyIntent -> { + // TODO: Remove and use it's own router: [REDACTED_JIRA] + startActivity(context, instance.intent, Bundle.EMPTY) + } + is RoutingComponent.Child.LegacyFragment, + -> error("Unsupported child: $instance") + } } - is RoutingComponent.Child.LegacyIntent -> { - // TODO: Remove and use it's own router: [REDACTED_JIRA] - startActivity(context, instance.intent, Bundle.EMPTY) - } - is RoutingComponent.Child.LegacyFragment, - -> error("Unsupported child: $instance") - } - } + }, + ) + + EventMessageEffect( + messageHandler = uiDependencies.eventMessageHandler, + snackbarHostState = snackbarHostState, + ) } } \ 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 9fb2de065d..462a81383e 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 @@ -37,8 +37,8 @@ internal class DefaultRoutingComponent @AssistedInject constructor( @Assisted context: AppComponentContext, private val childFactory: ChildFactory, private val appRouterConfig: AppRouterConfig, - private val routingFeatureToggles: RoutingFeatureToggles, private val uiDependencies: UiDependencies, + routingFeatureToggles: RoutingFeatureToggles, ) : RoutingComponent, AppComponentContext by context, SnackbarHandler { @@ -47,7 +47,7 @@ internal class DefaultRoutingComponent @AssistedInject constructor( override val stack: Value> = childStack( source = navigationProvider.getOrCreateTyped(), - serializer = AppRoute.serializer(), // TODO Maybe set this to null for AppRoute.Onboarding case. Need to check + serializer = AppRoute.serializer(), initialConfiguration = getInitialRoute(), handleBackButton = false, childFactory = ::child,