diff options
| author | 2024-05-03 11:32:45 -0700 | |
|---|---|---|
| committer | 2024-05-06 10:21:49 -0700 | |
| commit | a03c8dd5d2438d348bf08650f1837b15781f0bb1 (patch) | |
| tree | 7327b4f4840ac62d044e2b7155a346d5a80e5cce | |
| parent | 1fc80a64715369c7685a5da252e70a02fb83871f (diff) | |
Filtering null emissions from the long-press effect StateFlow.
The null values of the actionType flow only represent an idle state
where nothing happens. It is not necessary to collect them and add
coroutine continuation points just for this values.
Test: presubmit
Flag: ACONFIG quick_settings_visual_haptics_longpress TEAMFOOD
Bug: 333987986
Change-Id: I9219deb2cfb77c8a7fb8306c4a7879b767d0a0a4
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt | 97 |
1 files changed, 45 insertions, 52 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt b/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt index c464ed1d29bb..4875f481cce6 100644 --- a/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/haptics/qs/QSLongPressEffectViewBinder.kt @@ -30,6 +30,7 @@ import com.android.app.tracing.coroutines.launch import com.android.systemui.lifecycle.repeatWhenAttached import com.android.systemui.qs.tileimpl.QSTileViewImpl import kotlinx.coroutines.DisposableHandle +import kotlinx.coroutines.flow.filterNotNull object QSLongPressEffectViewBinder { @@ -49,64 +50,56 @@ object QSLongPressEffectViewBinder { launch({ "${tileSpec ?: "unknownTileSpec"}#LongPressEffect#action" }) { var effectAnimator: ValueAnimator? = null - qsLongPressEffect.actionType.collect { action -> - action?.let { - when (it) { - QSLongPressEffect.ActionType.CLICK -> { - tile.performClick() - qsLongPressEffect.clearActionType() - } - QSLongPressEffect.ActionType.LONG_PRESS -> { - tile.prepareForLaunch() - tile.performLongClick() - qsLongPressEffect.clearActionType() - } - QSLongPressEffect.ActionType.RESET_AND_LONG_PRESS -> { - tile.resetLongPressEffectProperties() - tile.performLongClick() - qsLongPressEffect.clearActionType() - } - QSLongPressEffect.ActionType.START_ANIMATOR -> { - if (effectAnimator?.isRunning != true) { - effectAnimator = - ValueAnimator.ofFloat(0f, 1f).apply { - this.duration = - qsLongPressEffect.effectDuration.toLong() - interpolator = AccelerateDecelerateInterpolator() + qsLongPressEffect.actionType.filterNotNull().collect { action -> + when (action) { + QSLongPressEffect.ActionType.CLICK -> { + tile.performClick() + qsLongPressEffect.clearActionType() + } + QSLongPressEffect.ActionType.LONG_PRESS -> { + tile.prepareForLaunch() + tile.performLongClick() + qsLongPressEffect.clearActionType() + } + QSLongPressEffect.ActionType.RESET_AND_LONG_PRESS -> { + tile.resetLongPressEffectProperties() + tile.performLongClick() + qsLongPressEffect.clearActionType() + } + QSLongPressEffect.ActionType.START_ANIMATOR -> { + if (effectAnimator?.isRunning != true) { + effectAnimator = + ValueAnimator.ofFloat(0f, 1f).apply { + this.duration = + qsLongPressEffect.effectDuration.toLong() + interpolator = AccelerateDecelerateInterpolator() - doOnStart { - qsLongPressEffect.handleAnimationStart() + doOnStart { qsLongPressEffect.handleAnimationStart() } + addUpdateListener { + val value = animatedValue as Float + if (value == 0f) { + tile.bringToFront() + } else { + tile.updateLongPressEffectProperties(value) } - addUpdateListener { - val value = animatedValue as Float - if (value == 0f) { - tile.bringToFront() - } else { - tile.updateLongPressEffectProperties(value) - } - } - doOnEnd { - qsLongPressEffect.handleAnimationComplete() - } - doOnCancel { - qsLongPressEffect.handleAnimationCancel() - } - start() } - } + doOnEnd { qsLongPressEffect.handleAnimationComplete() } + doOnCancel { qsLongPressEffect.handleAnimationCancel() } + start() + } } - QSLongPressEffect.ActionType.REVERSE_ANIMATOR -> { - effectAnimator?.let { - val pausedProgress = it.animatedFraction - qsLongPressEffect.playReverseHaptics(pausedProgress) - it.reverse() - } - } - QSLongPressEffect.ActionType.CANCEL_ANIMATOR -> { - tile.resetLongPressEffectProperties() - effectAnimator?.cancel() + } + QSLongPressEffect.ActionType.REVERSE_ANIMATOR -> { + effectAnimator?.let { + val pausedProgress = it.animatedFraction + qsLongPressEffect.playReverseHaptics(pausedProgress) + it.reverse() } } + QSLongPressEffect.ActionType.CANCEL_ANIMATOR -> { + tile.resetLongPressEffectProperties() + effectAnimator?.cancel() + } } } } |