Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2ad472eb authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

BurnInState: removes domain layer dependency from UI layer code

Shouldn't depend on an interactor from a composable. Luckily, there's a
ready to use view-model that carries the same value.

Bug: 392086205
Test: system UI runs in AOD, didn't test any deeper
Flag: com.android.systemui.scene_container
Change-Id: I7cdd2a02ded52e7f74408aee9978fa6db171f97f
parent 198ac2da
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -26,18 +26,16 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalDensity
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.plugins.clocks.ClockController
import kotlin.math.min
import kotlin.math.roundToInt

/** Produces a [BurnInState] that can be used to query the `LockscreenBurnInViewModel` flows. */
@Composable
fun rememberBurnIn(
    clockInteractor: KeyguardClockInteractor,
): BurnInState {
    val clock by clockInteractor.currentClock.collectAsStateWithLifecycle()
fun rememberBurnIn(clockViewModel: KeyguardClockViewModel): BurnInState {
    val clock by clockViewModel.currentClock.collectAsStateWithLifecycle()

    val (smartspaceTop, onSmartspaceTopChanged) = remember { mutableStateOf<Float?>(null) }
    val (smallClockTop, onSmallClockTopChanged) = remember { mutableStateOf<Float?>(null) }
@@ -62,18 +60,12 @@ fun rememberBurnIn(
}

@Composable
private fun rememberBurnInParameters(
    clock: ClockController?,
    topmostTop: Int,
): BurnInParameters {
private fun rememberBurnInParameters(clock: ClockController?, topmostTop: Int): BurnInParameters {
    val density = LocalDensity.current
    val topInset = WindowInsets.systemBars.union(WindowInsets.displayCutout).getTop(density)

    return remember(clock, topInset, topmostTop) {
        BurnInParameters(
            topInset = topInset,
            minViewY = topmostTop,
        )
        BurnInParameters(topInset = topInset, minViewY = topmostTop)
    }
}

+4 −4
Original line number Diff line number Diff line
@@ -38,11 +38,11 @@ import com.android.compose.animation.scene.ContentScope
import com.android.compose.modifiers.thenIf
import com.android.systemui.common.ui.ConfigurationState
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.composable.blueprint.rememberBurnIn
import com.android.systemui.keyguard.ui.composable.modifier.burnInAware
import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel
import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.notifications.ui.composable.ConstrainedNotificationStack
@@ -89,7 +89,7 @@ constructor(
    private val nicAodIconViewStore: AlwaysOnDisplayNotificationIconViewStore,
    private val aodPromotedNotificationViewModelFactory: AODPromotedNotificationViewModel.Factory,
    private val systemBarUtilsState: SystemBarUtilsState,
    private val clockInteractor: KeyguardClockInteractor,
    private val keyguardClockViewModel: KeyguardClockViewModel,
) {

    init {
@@ -118,7 +118,7 @@ constructor(

        val isVisible by
            keyguardRootViewModel.isAodPromotedNotifVisible.collectAsStateWithLifecycle()
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)

        AnimatedVisibility(
            visible = isVisible,
@@ -141,7 +141,7 @@ constructor(
                isVisible.stopAnimating()
            }
        }
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)
        AnimatedVisibility(
            visibleState = transitionState,
            enter = fadeIn(),
+4 −5
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.compose.animation.scene.ContentScope
import com.android.compose.animation.scene.rememberMutableSceneTransitionLayoutState
import com.android.compose.modifiers.thenIf
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.composable.blueprint.ClockScenes.largeClockScene
import com.android.systemui.keyguard.ui.composable.blueprint.ClockScenes.smallClockScene
import com.android.systemui.keyguard.ui.composable.blueprint.ClockScenes.splitShadeLargeClockScene
@@ -56,7 +55,7 @@ constructor(
    private val mediaCarouselSection: MediaCarouselSection,
    private val clockSection: DefaultClockSection,
    private val weatherClockSection: WeatherClockSection,
    private val clockInteractor: KeyguardClockInteractor,
    private val keyguardClockViewModel: KeyguardClockViewModel,
) {
    @Composable
    fun ContentScope.DefaultClockLayout(
@@ -138,7 +137,7 @@ constructor(
        smartSpacePaddingTop: (Resources) -> Int,
        modifier: Modifier = Modifier,
    ) {
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)

        Column(modifier = modifier) {
            with(clockSection) {
@@ -163,7 +162,7 @@ constructor(
        smartSpacePaddingTop: (Resources) -> Int,
        shouldOffSetClockToOneHalf: Boolean = false,
    ) {
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)
        val isLargeClockVisible by clockViewModel.isLargeClockVisible.collectAsStateWithLifecycle()

        LaunchedEffect(isLargeClockVisible) {
@@ -204,7 +203,7 @@ constructor(
        smartSpacePaddingTop: (Resources) -> Int,
        modifier: Modifier = Modifier,
    ) {
        val burnIn = rememberBurnIn(clockInteractor)
        val burnIn = rememberBurnIn(keyguardClockViewModel)
        val isLargeClockVisible by clockViewModel.isLargeClockVisible.collectAsStateWithLifecycle()
        val currentClockState = clockViewModel.currentClock.collectAsStateWithLifecycle()

+3 −3
Original line number Diff line number Diff line
@@ -30,9 +30,9 @@ import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
import com.android.systemui.keyguard.ui.composable.blueprint.rememberBurnIn
import com.android.systemui.keyguard.ui.composable.section.DefaultClockSection
import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
import com.android.systemui.lifecycle.rememberViewModel
import com.android.systemui.notifications.ui.viewmodel.NotificationsShadeOverlayActionsViewModel
import com.android.systemui.notifications.ui.viewmodel.NotificationsShadeOverlayContentViewModel
@@ -57,7 +57,7 @@ constructor(
    private val shadeSession: SaveableSession,
    private val stackScrollView: Lazy<NotificationScrollView>,
    private val clockSection: DefaultClockSection,
    private val clockInteractor: KeyguardClockInteractor,
    private val keyguardClockViewModel: KeyguardClockViewModel,
) : Overlay {
    override val key = Overlays.NotificationsShade

@@ -105,7 +105,7 @@ constructor(
            Box {
                Column {
                    if (viewModel.showClock) {
                        val burnIn = rememberBurnIn(clockInteractor)
                        val burnIn = rememberBurnIn(keyguardClockViewModel)

                        with(clockSection) {
                            SmallClock(