Add smooth animation to voice messages play progress (#7698)

* Add linear animation to voice message playback progress

Instead of animating the small `progress` value changes, calculate an animation for the range `maxProgress - progress`, with a linear interpolator so it's completely smooth. Previously, the progress was updated in 'steps' that were quite noticeable.
This commit is contained in:
bxdxnn
2026-09-18 10:39:15 +03:00
committed by GitHub
parent c0bb68c872
commit 5cac4767f1
26 changed files with 1120 additions and 39 deletions
@@ -135,7 +135,9 @@ class VoiceMessagePresenter(
progress = progress,
time = time,
showCursor = showCursor,
isPlaying = playerState.isPlaying,
playbackSpeed = VoicePlayerConfig.availablePlaybackSpeeds[playbackSpeedIndex],
durationMs = duration,
eventSink = ::handleEvent,
)
}
@@ -34,6 +34,8 @@ class VoiceMessagePresenterTest {
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play)
assertThat(it.progress).isEqualTo(0f)
assertThat(it.time).isEqualTo("1:01")
assertThat(it.isPlaying).isFalse()
assertThat(it.durationMs).isEqualTo(61_000)
}
}
}