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

Commit 99a9fe34 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere Committed by Android (Google) Code Review
Browse files

Merge "Add ObservableTransitionState.currentOverlays()" into main

parents 5b3b93fc a2bb660e
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -46,8 +46,21 @@ sealed interface ObservableTransitionState {
        }
    }

    /** The current overlays. */
    fun currentOverlays(): Flow<Set<OverlayKey>> {
        return when (this) {
            is Idle -> flowOf(currentOverlays)
            is Transition -> currentOverlays
        }
    }

    /** No transition/animation is currently running. */
    data class Idle(val currentScene: SceneKey) : ObservableTransitionState
    data class Idle
    @JvmOverloads
    constructor(
        val currentScene: SceneKey,
        val currentOverlays: Set<OverlayKey> = emptySet(),
    ) : ObservableTransitionState

    /** There is a transition animating between two scenes. */
    sealed class Transition(
@@ -94,7 +107,7 @@ sealed interface ObservableTransitionState {
            val fromScene: SceneKey,
            val toScene: SceneKey,
            val currentScene: Flow<SceneKey>,
            currentOverlays: Flow<Set<OverlayKey>>,
            currentOverlays: Set<OverlayKey>,
            progress: Flow<Float>,
            isInitiatedByUserInput: Boolean,
            isUserInputOngoing: Flow<Boolean>,
@@ -104,7 +117,7 @@ sealed interface ObservableTransitionState {
            Transition(
                fromScene,
                toScene,
                currentOverlays,
                flowOf(currentOverlays),
                progress,
                isInitiatedByUserInput,
                isUserInputOngoing,
@@ -169,7 +182,7 @@ sealed interface ObservableTransitionState {
                isUserInputOngoing: Flow<Boolean>,
                previewProgress: Flow<Float> = flowOf(0f),
                isInPreviewStage: Flow<Boolean> = flowOf(false),
                currentOverlays: Flow<Set<OverlayKey>> = flowOf(emptySet()),
                currentOverlays: Set<OverlayKey> = emptySet(),
            ): ChangeScene {
                return ChangeScene(
                    fromScene,
@@ -205,13 +218,17 @@ sealed interface ObservableTransitionState {
fun SceneTransitionLayoutState.observableTransitionState(): Flow<ObservableTransitionState> {
    return snapshotFlow {
            when (val state = transitionState) {
                is TransitionState.Idle -> ObservableTransitionState.Idle(state.currentScene)
                is TransitionState.Idle ->
                    ObservableTransitionState.Idle(
                        state.currentScene,
                        state.currentOverlays,
                    )
                is TransitionState.Transition.ChangeScene -> {
                    ObservableTransitionState.Transition.ChangeScene(
                        fromScene = state.fromScene,
                        toScene = state.toScene,
                        currentScene = snapshotFlow { state.currentScene },
                        currentOverlays = flowOf(state.currentOverlays),
                        currentOverlays = state.currentOverlays,
                        progress = snapshotFlow { state.progress },
                        isInitiatedByUserInput = state.isInitiatedByUserInput,
                        isUserInputOngoing = snapshotFlow { state.isUserInputOngoing },