From 2b09748877544a65ad6100430435a054bb057d1c Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 23 Sep 2024 18:39:28 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/core/ui/res/TangemTheme.kt | 19 ++++++++++++------- .../ui/screen/ComposeBottomSheetFragment.kt | 6 +++++- .../tangem/core/ui/screen/ComposeScreen.kt | 8 +++++++- 3 files changed, 24 insertions(+), 9 deletions(-) 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 999276faf5..372a8c50f9 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 @@ -25,6 +25,7 @@ fun TangemTheme( dimens: TangemDimens = TangemTheme.dimens, vibratorHapticManager: VibratorHapticManager? = null, snackbarHostState: SnackbarHostState = remember { SnackbarHostState() }, + overrideSystemBarColors: Boolean = true, content: @Composable () -> Unit, ) { val themeColors = if (isDark) darkThemeColors() else lightThemeColors() @@ -32,14 +33,18 @@ fun TangemTheme( .also { it.update(themeColors) } val shapes = remember { TangemShapes(dimens) } - val systemUiController = rememberSystemUiController() - SideEffect { - systemUiController.setSystemBarsColor( - color = Color.Transparent, - darkIcons = !isDark, - isNavigationBarContrastEnforced = false, - ) + // we don't want to override system bar colors in case of fragment bottom sheets for example + if (overrideSystemBarColors) { + val systemUiController = rememberSystemUiController() + + SideEffect { + systemUiController.setSystemBarsColor( + color = Color.Transparent, + darkIcons = !isDark, + isNavigationBarContrastEnforced = false, + ) + } } val view = LocalView.current diff --git a/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeBottomSheetFragment.kt b/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeBottomSheetFragment.kt index 75dc4e8a98..c5c4285292 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeBottomSheetFragment.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeBottomSheetFragment.kt @@ -52,7 +52,11 @@ abstract class ComposeBottomSheetFragment : BottomSheetDialogFragment(), Compose override fun getTheme(): Int = R.style.AppTheme_TransparentBottomSheetDialog override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { - return createComposeView(inflater.context, requireActivity()) + return createComposeView( + context = inflater.context, + activity = requireActivity(), + overrideSystemBarColors = false, + ) } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { diff --git a/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeScreen.kt b/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeScreen.kt index 5557002b53..c403c5036e 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeScreen.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/screen/ComposeScreen.kt @@ -50,9 +50,14 @@ internal interface ComposeScreen { * Creates a [ComposeView] with the defined content for the Compose screen. * * @param context The context. + * @param overrideSystemBarColors Whether to override the system bar colors to make them transparent. * @return A [ComposeView] instance with the defined screen content. */ -internal fun ComposeScreen.createComposeView(context: Context, activity: Activity): ComposeView { +internal fun ComposeScreen.createComposeView( + context: Context, + activity: Activity, + overrideSystemBarColors: Boolean = true, +): ComposeView { return ComposeView(context).apply { setContent { val appThemeMode by uiDependencies.appThemeModeHolder.appThemeMode @@ -63,6 +68,7 @@ internal fun ComposeScreen.createComposeView(context: Context, activity: Activit windowSize = windowSize, vibratorHapticManager = uiDependencies.vibratorHapticManager, snackbarHostState = uiDependencies.globalSnackbarHostState, + overrideSystemBarColors = overrideSystemBarColors, ) { ScreenContent(modifier = screenModifier) }