diff --git a/ui/src/main/kotlin/com/bitwarden/ui/platform/base/util/StatusBarsAppearanceAffect.kt b/ui/src/main/kotlin/com/bitwarden/ui/platform/base/util/StatusBarsAppearanceAffect.kt index b8aae9e0e0..421dc441d0 100644 --- a/ui/src/main/kotlin/com/bitwarden/ui/platform/base/util/StatusBarsAppearanceAffect.kt +++ b/ui/src/main/kotlin/com/bitwarden/ui/platform/base/util/StatusBarsAppearanceAffect.kt @@ -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 } } }