VoiceMessageEvents -> VoiceMessageEvent
This commit is contained in:
parent
6b2c22766c
commit
a10ac8aaab
6 changed files with 30 additions and 30 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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])
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue