summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt14
1 files changed, 9 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
index 1f11f2da8340..f6aa189eb571 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/sliders/ui/viewmodel/VolumeDialogSliderViewModel.kt
@@ -40,7 +40,6 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
-import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.flatMapLatest
@@ -78,11 +77,16 @@ constructor(
private val userVolumeUpdates = MutableStateFlow<VolumeUpdate?>(null)
private val model: Flow<VolumeDialogStreamModel> =
- interactor.slider
- .filter {
- val currentVolumeUpdate = userVolumeUpdates.value ?: return@filter true
+ combine(interactor.slider, userVolumeUpdates) { model, currentVolumeUpdate ->
+ currentVolumeUpdate ?: return@combine model
val lastVolumeUpdateTime = currentVolumeUpdate.timestampMillis
- getTimestampMillis() - lastVolumeUpdateTime > VOLUME_UPDATE_GRACE_PERIOD
+ val shouldIgnoreUpdates =
+ getTimestampMillis() - lastVolumeUpdateTime < VOLUME_UPDATE_GRACE_PERIOD
+ if (shouldIgnoreUpdates) {
+ model.copy(level = currentVolumeUpdate.newVolumeLevel)
+ } else {
+ model
+ }
}
.stateIn(coroutineScope, SharingStarted.Eagerly, null)
.filterNotNull()