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

Commit cfe2434e authored by Matt Pietal's avatar Matt Pietal Committed by Android (Google) Code Review
Browse files

Merge "Don't sample StateFlow" into main

parents d3422502 b73f9f50
Loading
Loading
Loading
Loading
+73 −85
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@ import com.android.systemui.power.shared.model.WakeSleepReason.FOLD
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.util.kotlin.Utils.Companion.sample as sampleCombine
import com.android.systemui.util.kotlin.sample
import java.util.UUID
import javax.inject.Inject
@@ -52,7 +51,6 @@ import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import com.android.app.tracing.coroutines.launchTraced as launch

@SysUISingleton
class FromLockscreenTransitionInteractor
@@ -176,20 +174,12 @@ constructor(
        if (SceneContainerFlag.isEnabled) return
        var transitionId: UUID? = null
        scope.launch("$TAG#listenForLockscreenToPrimaryBouncerDragging") {
            shadeRepository.legacyShadeExpansion
                .sampleCombine(
                    transitionInteractor.startedKeyguardTransitionStep,
                    keyguardInteractor.statusBarState,
                    keyguardInteractor.isKeyguardDismissible,
                    keyguardInteractor.isKeyguardOccluded,
                )
                .collect {
                    (
                        shadeExpansion,
                        startedStep,
                        statusBarState,
                        isKeyguardUnlocked,
                        isKeyguardOccluded) ->
            shadeRepository.legacyShadeExpansion.collect { shadeExpansion ->
                val statusBarState = keyguardInteractor.statusBarState.value
                val isKeyguardUnlocked = keyguardInteractor.isKeyguardDismissible.value
                val isKeyguardOccluded = keyguardInteractor.isKeyguardOccluded.value
                val startedStep = transitionInteractor.startedKeyguardTransitionStep.value

                val id = transitionId
                val currentTransitionInfo =
                    internalTransitionInteractor.currentTransitionInfoInternal()
@@ -212,8 +202,7 @@ constructor(
                                id,
                                // This maps the shadeExpansion to a much faster curve, to match
                                // the existing logic
                                    1f -
                                        MathUtils.constrainedMap(0f, 1f, 0.95f, 1f, shadeExpansion),
                                1f - MathUtils.constrainedMap(0f, 1f, 0.95f, 1f, shadeExpansion),
                                nextState,
                            )
                        }
@@ -232,8 +221,7 @@ constructor(
                            transitionRepository.startTransition(
                                TransitionInfo(
                                    ownerName =
                                            "$name " +
                                                "(on behalf of FromPrimaryBouncerInteractor)",
                                        "$name " + "(on behalf of FromPrimaryBouncerInteractor)",
                                    from = KeyguardState.PRIMARY_BOUNCER,
                                    to =
                                        if (isKeyguardOccluded) KeyguardState.OCCLUDED
+3 −5
Original line number Diff line number Diff line
@@ -284,7 +284,7 @@ constructor(
        }

    /** Observable for the [StatusBarState] */
    val statusBarState: Flow<StatusBarState> = repository.statusBarState
    val statusBarState: StateFlow<StatusBarState> = repository.statusBarState

    /** Observable for [BiometricUnlockModel] when biometrics are used to unlock the device. */
    val biometricUnlockState: StateFlow<BiometricUnlockModel> = repository.biometricUnlockState
@@ -350,23 +350,21 @@ constructor(
    val dismissAlpha: Flow<Float> =
        shadeRepository.legacyShadeExpansion
            .sampleCombine(
                statusBarState,
                keyguardTransitionInteractor.currentKeyguardState,
                keyguardTransitionInteractor.transitionState,
                isKeyguardDismissible,
                keyguardTransitionInteractor.isFinishedIn(Scenes.Communal, GLANCEABLE_HUB),
            )
            .filter { (_, _, _, step, _, _) -> !step.transitionState.isTransitioning() }
            .filter { (_, _, step, _, _) -> !step.transitionState.isTransitioning() }
            .transform {
                (
                    legacyShadeExpansion,
                    statusBarState,
                    currentKeyguardState,
                    step,
                    isKeyguardDismissible,
                    onGlanceableHub) ->
                if (
                    statusBarState == StatusBarState.KEYGUARD &&
                    statusBarState.value == StatusBarState.KEYGUARD &&
                        isKeyguardDismissible &&
                        currentKeyguardState == LOCKSCREEN &&
                        legacyShadeExpansion != 1f
+10 −15
Original line number Diff line number Diff line
@@ -20,13 +20,13 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.StatusBarState
import com.android.systemui.shade.data.repository.FlingInfo
import com.android.systemui.shade.data.repository.ShadeRepository
import com.android.systemui.util.kotlin.Utils.Companion.sample
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn

/**
@@ -39,8 +39,8 @@ class SwipeToDismissInteractor
constructor(
    @Background backgroundScope: CoroutineScope,
    shadeRepository: ShadeRepository,
    transitionInteractor: KeyguardTransitionInteractor,
    keyguardInteractor: KeyguardInteractor,
    private val transitionInteractor: KeyguardTransitionInteractor,
    private val keyguardInteractor: KeyguardInteractor,
) {
    /**
     * Emits a [FlingInfo] whenever a swipe to dismiss gesture has started a fling animation on the
@@ -50,20 +50,15 @@ constructor(
     * LOCKSCREEN -> GONE, and by [KeyguardSurfaceBehindInteractor] to match the surface remote
     * animation's velocity to the fling velocity, if applicable.
     */
    val dismissFling =
    val dismissFling: StateFlow<FlingInfo?> =
        shadeRepository.currentFling
            .sample(
                transitionInteractor.startedKeyguardTransitionStep,
                keyguardInteractor.isKeyguardDismissible,
                keyguardInteractor.statusBarState,
            )
            .filter { (flingInfo, startedStep, keyguardDismissable, statusBarState) ->
            .filter { flingInfo ->
                flingInfo != null &&
                    !flingInfo.expand &&
                    statusBarState != StatusBarState.SHADE_LOCKED &&
                    startedStep.to == KeyguardState.LOCKSCREEN &&
                    keyguardDismissable
                    keyguardInteractor.statusBarState.value != StatusBarState.SHADE_LOCKED &&
                    transitionInteractor.startedKeyguardTransitionStep.value.to ==
                        KeyguardState.LOCKSCREEN &&
                    keyguardInteractor.isKeyguardDismissible.value
            }
            .map { (flingInfo, _) -> flingInfo }
            .stateIn(backgroundScope, SharingStarted.Eagerly, null)
}