diff --git a/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt b/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt index 9f0bff8ab1..85e57a4ae2 100644 --- a/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt +++ b/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt @@ -2,10 +2,8 @@ package com.tangem.tap.features.home import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext @@ -13,7 +11,7 @@ import com.arkivanov.essenty.lifecycle.subscribe import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel import com.tangem.core.ui.components.SystemBarsIconsDisposable -import com.tangem.core.ui.res.LocalRootBackgroundColor +import com.tangem.core.ui.utils.ChangeRootBackgroundColorEffect import com.tangem.core.ui.utils.findActivity import com.tangem.tap.common.redux.AppState import com.tangem.tap.features.home.api.HomeComponent @@ -65,17 +63,7 @@ internal class DefaultHomeComponent @AssistedInject constructor( onShopButtonClick = model::onShopClick, onSearchTokensClick = model::onSearchClick, ) - - val rootBackgroundColor = LocalRootBackgroundColor.current - val previousColor = remember { rootBackgroundColor.value } - val storiesBackgroundColor = Color(color = 0xFF010101) - - DisposableEffect(Unit) { - rootBackgroundColor.value = storiesBackgroundColor - onDispose { - rootBackgroundColor.value = previousColor - } - } + ChangeRootBackgroundColorEffect(Color(color = 0xFF010101)) } override fun newState(state: HomeState) { diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt index c1df30c687..b6410efd58 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt @@ -107,7 +107,7 @@ fun TangemTheme( CompositionLocalProvider( LocalTangemShimmer provides TangemShimmer, LocalMainBottomSheetColor provides remember { mutableStateOf(Color.Unspecified) }, - LocalRootBackgroundColor provides remember { mutableStateOf(rootBackgroundColor) }, + LocalRootBackgroundColor provides remember(rootBackgroundColor) { mutableStateOf(rootBackgroundColor) }, LocalTextSelectionColors provides TangemTextSelectionColors, ) { ProvideTextStyle( diff --git a/core/ui/src/main/java/com/tangem/core/ui/utils/TangemThemeUtils.kt b/core/ui/src/main/java/com/tangem/core/ui/utils/TangemThemeUtils.kt new file mode 100644 index 0000000000..560034ee3b --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/utils/TangemThemeUtils.kt @@ -0,0 +1,31 @@ +package com.tangem.core.ui.utils + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.graphics.Color +import com.tangem.core.ui.res.LocalRootBackgroundColor + +@Composable +fun ChangeRootBackgroundColorEffect(color: Color) { + var rootBackgroundColor by LocalRootBackgroundColor.current + var previousColor by remember { mutableStateOf(rootBackgroundColor) } + + DisposableEffect(color) { + rootBackgroundColor = color + onDispose { + rootBackgroundColor = previousColor + } + } + + LaunchedEffect(rootBackgroundColor) { + if (rootBackgroundColor != color) { + previousColor = rootBackgroundColor + rootBackgroundColor = color + } + } +} \ No newline at end of file diff --git a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/ui/OnboardingEntry.kt b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/ui/OnboardingEntry.kt index 65dd778fc4..c8a1c938fd 100644 --- a/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/ui/OnboardingEntry.kt +++ b/features/onboarding-v2/impl/src/main/kotlin/com/tangem/features/onboarding/v2/entry/impl/ui/OnboardingEntry.kt @@ -21,8 +21,8 @@ internal inline fun OnboardingEntry( Column( modifier = modifier .fillMaxSize() - .statusBarsPadding() - .background(TangemTheme.colors.background.primary), + .background(TangemTheme.colors.background.primary) + .statusBarsPadding(), ) { stepperContent(Modifier.fillMaxWidth()) diff --git a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt index 06f7b4b69f..5bc136d305 100644 --- a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt +++ b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt @@ -1,16 +1,14 @@ package com.tangem.feature.stories.impl import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.Stable -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.tangem.common.ui.swapStoriesScreen.SwapStoriesScreen import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel -import com.tangem.core.ui.res.LocalRootBackgroundColor import com.tangem.core.ui.res.TangemColorPalette +import com.tangem.core.ui.utils.ChangeRootBackgroundColorEffect import com.tangem.feature.stories.api.StoriesComponent import com.tangem.feature.stories.impl.model.StoriesModel import dagger.assisted.Assisted @@ -29,16 +27,7 @@ internal class DefaultStoriesComponent @AssistedInject constructor( override fun Content(modifier: Modifier) { val state = model.state.collectAsStateWithLifecycle() SwapStoriesScreen(state.value) - - val rootBackgroundColor = LocalRootBackgroundColor.current - val previousColor = remember { rootBackgroundColor.value } - - DisposableEffect(Unit) { - rootBackgroundColor.value = TangemColorPalette.Black - onDispose { - rootBackgroundColor.value = previousColor - } - } + ChangeRootBackgroundColorEffect(TangemColorPalette.Black) } @AssistedFactory