Updated on 2026-08-14

This commit is contained in:
Tangem 2025-03-31 18:44:49 +03:00
parent 377f2cd6fd
commit ded577faff
7 changed files with 77 additions and 68 deletions

View file

@ -2,28 +2,36 @@ package com.tangem.tap.routing
import android.app.Activity
import android.os.Bundle
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
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.ExperimentalDecomposeApi
import com.arkivanov.decompose.extensions.compose.stack.Children
import com.arkivanov.decompose.extensions.compose.stack.animation.*
import com.arkivanov.decompose.router.stack.ChildStack
import com.arkivanov.decompose.value.Value
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.LocalIsNavigationRefactoringEnabled
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
@OptIn(ExperimentalDecomposeApi::class)
@Composable
internal fun RootContent(
stack: ChildStack<AppRoute, RoutingComponent.Child>,
stack: Value<ChildStack<AppRoute, RoutingComponent.Child>>,
uiDependencies: UiDependencies,
modifier: Modifier = Modifier,
) {
@ -33,21 +41,15 @@ internal fun RootContent(
activity = context as Activity,
uiDependencies = uiDependencies,
) {
val snackbarHostState = LocalSnackbarHostState.current
CompositionLocalProvider(
LocalIsNavigationRefactoringEnabled provides true,
) {
val snackbarHostState = LocalSnackbarHostState.current
Scaffold(
modifier = modifier,
containerColor = TangemTheme.colors.background.primary,
snackbarHost = {
TangemSnackbarHost(
modifier = Modifier.padding(all = 16.dp),
hostState = snackbarHostState,
)
},
contentWindowInsets = WindowInsetsZero,
content = { paddingValues ->
Box(Modifier.background(TangemTheme.colors.background.primary)) {
Children(
modifier = Modifier.padding(paddingValues),
modifier = modifier,
animation = stackAnimation(fade()),
stack = stack,
) { child ->
when (val instance = child.instance) {
@ -63,8 +65,16 @@ internal fun RootContent(
-> error("Unsupported child: $instance")
}
}
},
)
TangemSnackbarHost(
modifier = Modifier
.align(Alignment.BottomCenter)
.navigationBarsPadding()
.padding(all = 16.dp),
hostState = snackbarHostState,
)
}
}
EventMessageEffect()
}