diff --git a/changelog.d/1222.bugfix b/changelog.d/1222.bugfix new file mode 100644 index 0000000000..325cf6fc4d --- /dev/null +++ b/changelog.d/1222.bugfix @@ -0,0 +1 @@ +Fix system bar color after login on light theme. diff --git a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/SunsetPage.kt b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/SunsetPage.kt index 10a6f529af..d4b203d4ae 100644 --- a/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/SunsetPage.kt +++ b/libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/atomic/pages/SunsetPage.kt @@ -44,6 +44,7 @@ import io.element.android.libraries.designsystem.text.withColoredPeriod import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.theme.ElementTheme +import io.element.android.libraries.theme.ForcedDarkElementTheme @Composable fun SunsetPage( @@ -53,9 +54,7 @@ fun SunsetPage( modifier: Modifier = Modifier, overallContent: @Composable () -> Unit, ) { - ElementTheme( - darkTheme = true - ) { + ForcedDarkElementTheme(lightStatusBar = true) { Box( modifier = modifier.fillMaxSize() ) { diff --git a/libraries/theme/src/main/kotlin/io/element/android/libraries/theme/ElementTheme.kt b/libraries/theme/src/main/kotlin/io/element/android/libraries/theme/ElementTheme.kt index fa7bd279e7..81780d1c2d 100644 --- a/libraries/theme/src/main/kotlin/io/element/android/libraries/theme/ElementTheme.kt +++ b/libraries/theme/src/main/kotlin/io/element/android/libraries/theme/ElementTheme.kt @@ -92,6 +92,7 @@ internal val LocalCompoundColors = staticCompositionLocalOf { compoundColorsLigh @Composable fun ElementTheme( darkTheme: Boolean = isSystemInDarkTheme(), + lightStatusBar: Boolean = !darkTheme, dynamicColor: Boolean = false, /* true to enable MaterialYou */ compoundColors: SemanticColors = if (darkTheme) compoundColorsDark else compoundColorsLight, materialLightColors: ColorScheme = materialColorSchemeLight, @@ -111,8 +112,19 @@ fun ElementTheme( darkTheme -> materialDarkColors else -> materialLightColors } + val statusBarColorScheme = if (lightStatusBar) { + when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + dynamicLightColorScheme(context) + } + else -> materialLightColors + } + } else { + colorScheme + } SideEffect { - systemUiController.applyTheme(colorScheme = colorScheme, darkTheme = darkTheme) + systemUiController.applyTheme(colorScheme = statusBarColorScheme, darkTheme = darkTheme && !lightStatusBar) } CompositionLocalProvider( LocalCompoundColors provides currentCompoundColor, @@ -132,6 +144,7 @@ fun ElementTheme( */ @Composable fun ForcedDarkElementTheme( + lightStatusBar: Boolean = false, content: @Composable () -> Unit, ) { val systemUiController = rememberSystemUiController() @@ -142,7 +155,7 @@ fun ForcedDarkElementTheme( systemUiController.applyTheme(colorScheme, wasDarkTheme) } } - ElementTheme(darkTheme = true, content = content) + ElementTheme(darkTheme = true, lightStatusBar = lightStatusBar, content = content) } private fun SystemUiController.applyTheme(