Updated on 2026-08-14

This commit is contained in:
Tangem 2024-09-23 18:39:28 +03:00
parent ee1fa236b9
commit 2b09748877
3 changed files with 24 additions and 9 deletions

View file

@ -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

View file

@ -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 {

View file

@ -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)
}