Fix statusbar color when display is turned off (#6006)

This commit is contained in:
David Perez 2025-10-13 09:43:15 -05:00 committed by GitHub
parent 7ea87505a4
commit 62f76a4f8b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,13 +3,13 @@ package com.bitwarden.ui.platform.base.util
import android.app.Activity
import android.view.View
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.ui.platform.LocalView
import androidx.core.view.WindowCompat
import androidx.lifecycle.Lifecycle
/**
* Sets the appearance of the StatusBars to the [isLightStatusBars] value and clears the value once
* disposed.
* lifecycle is stopped.
*/
@Composable
fun StatusBarsAppearanceAffect(
@ -18,13 +18,24 @@ fun StatusBarsAppearanceAffect(
) {
if (view.isInEditMode) return
val activity = view.context as Activity
DisposableEffect(Unit) {
val insetsController = WindowCompat.getInsetsController(activity.window, view)
val originalStatusBarValue = insetsController.isAppearanceLightStatusBars
insetsController.isAppearanceLightStatusBars = isLightStatusBars
val insetsController = WindowCompat.getInsetsController(activity.window, view)
val originalStatusBarValue = insetsController.isAppearanceLightStatusBars
LifecycleEventEffect { _, event ->
when (event) {
Lifecycle.Event.ON_START -> {
insetsController.isAppearanceLightStatusBars = isLightStatusBars
}
onDispose {
insetsController.isAppearanceLightStatusBars = originalStatusBarValue
Lifecycle.Event.ON_STOP -> {
insetsController.isAppearanceLightStatusBars = originalStatusBarValue
}
Lifecycle.Event.ON_CREATE,
Lifecycle.Event.ON_RESUME,
Lifecycle.Event.ON_PAUSE,
Lifecycle.Event.ON_DESTROY,
Lifecycle.Event.ON_ANY,
-> Unit
}
}
}