VoiceMessageEvents -> VoiceMessageEvent

This commit is contained in:
Benoit Marty 2025-12-31 09:48:46 +01:00
parent 6b2c22766c
commit a10ac8aaab
6 changed files with 30 additions and 30 deletions

View file

@ -8,8 +8,8 @@
package io.element.android.libraries.voiceplayer.api
sealed interface VoiceMessageEvents {
data object PlayPause : VoiceMessageEvents
data class Seek(val percentage: Float) : VoiceMessageEvents
data object ChangePlaybackSpeed : VoiceMessageEvents
sealed interface VoiceMessageEvent {
data object PlayPause : VoiceMessageEvent
data class Seek(val percentage: Float) : VoiceMessageEvent
data object ChangePlaybackSpeed : VoiceMessageEvent
}

View file

@ -14,7 +14,7 @@ data class VoiceMessageState(
val time: String,
val showCursor: Boolean,
val playbackSpeed: Float,
val eventSink: (event: VoiceMessageEvents) -> Unit,
val eventSink: (event: VoiceMessageEvent) -> Unit,
) {
enum class Button {
Play,

View file

@ -22,7 +22,7 @@ import io.element.android.libraries.core.extensions.flatMap
import io.element.android.libraries.core.extensions.runCatchingExceptions
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.ui.utils.time.formatShort
import io.element.android.libraries.voiceplayer.api.VoiceMessageEvents
import io.element.android.libraries.voiceplayer.api.VoiceMessageEvent
import io.element.android.libraries.voiceplayer.api.VoiceMessageException
import io.element.android.libraries.voiceplayer.api.VoiceMessageState
import io.element.android.services.analytics.api.AnalyticsService
@ -87,9 +87,9 @@ class VoiceMessagePresenter(
}
}
fun handleEvent(event: VoiceMessageEvents) {
fun handleEvent(event: VoiceMessageEvent) {
when (event) {
is VoiceMessageEvents.PlayPause -> {
is VoiceMessageEvent.PlayPause -> {
if (playerState.isPlaying) {
player.pause()
} else if (playerState.isReady) {
@ -111,10 +111,10 @@ class VoiceMessagePresenter(
}
}
}
is VoiceMessageEvents.Seek -> {
is VoiceMessageEvent.Seek -> {
player.seekTo((event.percentage * duration).toLong())
}
is VoiceMessageEvents.ChangePlaybackSpeed -> {
is VoiceMessageEvent.ChangePlaybackSpeed -> {
playbackSpeedIndex.intValue = (playbackSpeedIndex.intValue + 1) % VoicePlayerConfig.availablePlaybackSpeeds.size
player.setPlaybackSpeed(VoicePlayerConfig.availablePlaybackSpeeds[playbackSpeedIndex.intValue])
}

View file

@ -13,7 +13,7 @@ import io.element.android.libraries.core.mimetype.MimeTypes
import io.element.android.libraries.matrix.api.core.EventId
import io.element.android.libraries.matrix.api.media.MediaSource
import io.element.android.libraries.mediaplayer.test.FakeMediaPlayer
import io.element.android.libraries.voiceplayer.api.VoiceMessageEvents
import io.element.android.libraries.voiceplayer.api.VoiceMessageEvent
import io.element.android.libraries.voiceplayer.api.VoiceMessageException
import io.element.android.libraries.voiceplayer.api.VoiceMessageState
import io.element.android.services.analytics.api.AnalyticsService
@ -51,7 +51,7 @@ class VoiceMessagePresenterTest {
assertThat(it.time).isEqualTo("0:02")
}
initialState.eventSink(VoiceMessageEvents.PlayPause)
initialState.eventSink(VoiceMessageEvent.PlayPause)
awaitItem().also {
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
@ -87,7 +87,7 @@ class VoiceMessagePresenterTest {
assertThat(it.time).isEqualTo("0:02")
}
initialState.eventSink(VoiceMessageEvents.PlayPause)
initialState.eventSink(VoiceMessageEvent.PlayPause)
awaitItem().also {
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
@ -121,7 +121,7 @@ class VoiceMessagePresenterTest {
assertThat(it.time).isEqualTo("0:02")
}
initialState.eventSink(VoiceMessageEvents.PlayPause)
initialState.eventSink(VoiceMessageEvent.PlayPause)
skipItems(2) // skip downloading states
val playingState = awaitItem().also {
@ -130,7 +130,7 @@ class VoiceMessagePresenterTest {
assertThat(it.time).isEqualTo("0:01")
}
playingState.eventSink(VoiceMessageEvents.PlayPause)
playingState.eventSink(VoiceMessageEvent.PlayPause)
awaitItem().also {
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
assertThat(it.progress).isEqualTo(0.5f)
@ -166,7 +166,7 @@ class VoiceMessagePresenterTest {
assertThat(it.time).isEqualTo("0:10")
}
initialState.eventSink(VoiceMessageEvents.Seek(0.5f))
initialState.eventSink(VoiceMessageEvent.Seek(0.5f))
awaitItem().also {
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
@ -188,7 +188,7 @@ class VoiceMessagePresenterTest {
assertThat(it.time).isEqualTo("0:10")
}
initialState.eventSink(VoiceMessageEvents.PlayPause)
initialState.eventSink(VoiceMessageEvent.PlayPause)
skipItems(2) // skip downloading states
@ -196,7 +196,7 @@ class VoiceMessagePresenterTest {
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
assertThat(it.progress).isEqualTo(0.1f)
assertThat(it.time).isEqualTo("0:01")
it.eventSink(VoiceMessageEvents.Seek(0.5f))
it.eventSink(VoiceMessageEvent.Seek(0.5f))
}
awaitItem().also {
@ -215,19 +215,19 @@ class VoiceMessagePresenterTest {
presenter.test {
awaitItem().also {
assertThat(it.playbackSpeed).isEqualTo(1.0f)
it.eventSink(VoiceMessageEvents.ChangePlaybackSpeed)
it.eventSink(VoiceMessageEvent.ChangePlaybackSpeed)
}
awaitItem().also {
assertThat(it.playbackSpeed).isEqualTo(1.5f)
it.eventSink(VoiceMessageEvents.ChangePlaybackSpeed)
it.eventSink(VoiceMessageEvent.ChangePlaybackSpeed)
}
awaitItem().also {
assertThat(it.playbackSpeed).isEqualTo(2.0f)
it.eventSink(VoiceMessageEvents.ChangePlaybackSpeed)
it.eventSink(VoiceMessageEvent.ChangePlaybackSpeed)
}
awaitItem().also {
assertThat(it.playbackSpeed).isEqualTo(0.5f)
it.eventSink(VoiceMessageEvents.ChangePlaybackSpeed)
it.eventSink(VoiceMessageEvent.ChangePlaybackSpeed)
}
awaitItem().also {
assertThat(it.playbackSpeed).isEqualTo(1.0f)