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

Commit adcd65c3 authored by Anton Potapov's avatar Anton Potapov
Browse files

Show spatial audio only when its state is loaded

Flag: aconfig new_volume_panel TEAMFOOD
Test: atest SpatialAudioAvailabilityCriteriaTest
Test: atest SpatialAudioComponentInteractorTest
Bug: 329184473
Change-Id: I277ada8c591be04894bc4f45317afa2b1f2de73e
parent 3312c97d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ class SpatialAudioComponentInteractorTest : SysuiTestCase() {

                assertThat(values)
                    .containsExactly(
                        SpatialAudioEnabledModel.Unknown,
                        SpatialAudioEnabledModel.Disabled,
                        SpatialAudioEnabledModel.HeadTrackingEnabled,
                        SpatialAudioEnabledModel.SpatialAudioEnabled,
+9 −2
Original line number Diff line number Diff line
@@ -18,11 +18,12 @@ package com.android.systemui.volume.panel.component.spatial.domain

import com.android.systemui.volume.panel.component.spatial.domain.interactor.SpatialAudioComponentInteractor
import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialAudioAvailabilityModel
import com.android.systemui.volume.panel.component.spatial.domain.model.SpatialAudioEnabledModel
import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
import com.android.systemui.volume.panel.domain.ComponentAvailabilityCriteria
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.combine

@VolumePanelScope
class SpatialAudioAvailabilityCriteria
@@ -31,5 +32,11 @@ constructor(private val interactor: SpatialAudioComponentInteractor) :
    ComponentAvailabilityCriteria {

    override fun isAvailable(): Flow<Boolean> =
        interactor.isAvailable.map { it is SpatialAudioAvailabilityModel.SpatialAudio }
        combine(interactor.isAvailable, interactor.isEnabled) { isAvailable, isEnabled ->
            if (isAvailable is SpatialAudioAvailabilityModel.SpatialAudio) {
                isEnabled !is SpatialAudioEnabledModel.Unknown
            } else {
                false
            }
        }
}
+1 −1
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@ constructor(
            .stateIn(
                coroutineScope,
                SharingStarted.Eagerly,
                SpatialAudioEnabledModel.Disabled,
                SpatialAudioEnabledModel.Unknown,
            )

    /**
+3 −0
Original line number Diff line number Diff line
@@ -39,4 +39,7 @@ interface SpatialAudioEnabledModel {

    /** Head tracking is enabled. This also means that [SpatialAudioEnabled]. */
    data object HeadTrackingEnabled : SpatialAudioEnabled

    /** Spatial audio enabled state is unknown. */
    data object Unknown : SpatialAudioEnabled
}