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

Commit 12464755 authored by Anton Potapov's avatar Anton Potapov Committed by Android (Google) Code Review
Browse files

Merge "Show spatial audio only when its state is loaded" into main

parents 24128834 adcd65c3
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
}