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

Commit 81f31fd3 authored by 0's avatar 0 Committed by Shawn Lee
Browse files

[flexiglass] Clear session storage if we are idle on Gone scene

Bug: 355286156
Test: manually verified with logging that session storage is cleared when collapsing shade, even if back stack check doesn't trigger it
Flag: com.android.systemui.scene_container
Change-Id: I3705e8caad977c7c46a99eb484a80dd679d6945a
parent 34df8bb9
Loading
Loading
Loading
Loading
+21 −5
Original line number Diff line number Diff line
@@ -172,12 +172,28 @@ constructor(

    private fun resetShadeSessions() {
        applicationScope.launch {
            combine(
                    sceneBackInteractor.backStack
                        // We are in a session if either Shade or QuickSettings is on the back stack
                        .map { backStack ->
                    backStack.asIterable().any { it == Scenes.Shade || it == Scenes.QuickSettings }
                            backStack.asIterable().any {
                                it == Scenes.Shade || it == Scenes.QuickSettings
                            }
                        }
                        .distinctUntilChanged(),
                    sceneInteractor.transitionState
                        .mapNotNull { state ->
                            // We are also in a session if either Shade or QuickSettings is the
                            // current scene
                            when (state) {
                                is ObservableTransitionState.Idle -> state.currentScene
                                is ObservableTransitionState.Transition -> state.fromScene
                            }.let { it == Scenes.Shade || it == Scenes.QuickSettings }
                        }
                        .distinctUntilChanged()
                ) { inBackStack, isCurrentScene ->
                    inBackStack || isCurrentScene
                }
                // Once a session has ended, clear the session storage.
                .filter { inSession -> !inSession }
                .collect { shadeSessionStorage.clear() }