diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt index 203fd8f1da..5dbd0c478f 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/components/event/TimelineItemVoiceView.kt @@ -71,21 +71,21 @@ fun TimelineItemVoiceView( val a11y = stringResource(CommonStrings.common_voice_message) val a11yActionLabel = stringResource( - when (state.button) { - VoiceMessageState.Button.Play -> CommonStrings.a11y_play - VoiceMessageState.Button.Pause -> CommonStrings.a11y_pause - VoiceMessageState.Button.Downloading -> CommonStrings.common_downloading - VoiceMessageState.Button.Retry -> CommonStrings.action_retry - VoiceMessageState.Button.Disabled -> CommonStrings.error_unknown + when (state.buttonType) { + VoiceMessageState.ButtonType.Play -> CommonStrings.a11y_play + VoiceMessageState.ButtonType.Pause -> CommonStrings.a11y_pause + VoiceMessageState.ButtonType.Downloading -> CommonStrings.common_downloading + VoiceMessageState.ButtonType.Retry -> CommonStrings.action_retry + VoiceMessageState.ButtonType.Disabled -> CommonStrings.error_unknown } ) Row( modifier = modifier .clearAndSetSemantics { contentDescription = a11y - if (state.button == VoiceMessageState.Button.Disabled) { + if (state.buttonType == VoiceMessageState.ButtonType.Disabled) { disabled() - } else if (state.button in listOf(VoiceMessageState.Button.Play, VoiceMessageState.Button.Pause)) { + } else if (state.buttonType in listOf(VoiceMessageState.ButtonType.Play, VoiceMessageState.ButtonType.Pause)) { onClick(label = a11yActionLabel) { playPause() true @@ -103,12 +103,12 @@ fun TimelineItemVoiceView( verticalAlignment = Alignment.CenterVertically, ) { if (!isTalkbackActive()) { - when (state.button) { - VoiceMessageState.Button.Play -> PlayButton(onClick = ::playPause) - VoiceMessageState.Button.Pause -> PauseButton(onClick = ::playPause) - VoiceMessageState.Button.Downloading -> ProgressButton() - VoiceMessageState.Button.Retry -> RetryButton(onClick = ::playPause) - VoiceMessageState.Button.Disabled -> PlayButton(onClick = {}, enabled = false) + when (state.buttonType) { + VoiceMessageState.ButtonType.Play -> PlayButton(onClick = ::playPause) + VoiceMessageState.ButtonType.Pause -> PauseButton(onClick = ::playPause) + VoiceMessageState.ButtonType.Downloading -> ProgressButton() + VoiceMessageState.ButtonType.Retry -> RetryButton(onClick = ::playPause) + VoiceMessageState.ButtonType.Disabled -> PlayButton(onClick = {}, enabled = false) } } Spacer(Modifier.width(8.dp)) diff --git a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/VoiceItemView.kt b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/VoiceItemView.kt index f608236e49..dbbeb28b80 100644 --- a/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/VoiceItemView.kt +++ b/libraries/mediaviewer/impl/src/main/kotlin/io/element/android/libraries/mediaviewer/impl/gallery/ui/VoiceItemView.kt @@ -114,12 +114,12 @@ private fun VoiceInfoRow( .padding(start = 12.dp, end = 36.dp, top = 8.dp, bottom = 8.dp), verticalAlignment = Alignment.CenterVertically, ) { - when (state.button) { - VoiceMessageState.Button.Play -> PlayButton(onClick = ::playPause) - VoiceMessageState.Button.Pause -> PauseButton(onClick = ::playPause) - VoiceMessageState.Button.Downloading -> ProgressButton() - VoiceMessageState.Button.Retry -> RetryButton(onClick = ::playPause) - VoiceMessageState.Button.Disabled -> PlayButton(onClick = {}, enabled = false) + when (state.buttonType) { + VoiceMessageState.ButtonType.Play -> PlayButton(onClick = ::playPause) + VoiceMessageState.ButtonType.Pause -> PauseButton(onClick = ::playPause) + VoiceMessageState.ButtonType.Downloading -> ProgressButton() + VoiceMessageState.ButtonType.Retry -> RetryButton(onClick = ::playPause) + VoiceMessageState.ButtonType.Disabled -> PlayButton(onClick = {}, enabled = false) } Spacer(Modifier.width(8.dp)) Column( diff --git a/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageState.kt b/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageState.kt index 36fa13a268..2faf35f91f 100644 --- a/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageState.kt +++ b/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageState.kt @@ -9,14 +9,14 @@ package io.element.android.libraries.voiceplayer.api data class VoiceMessageState( - val button: Button, + val buttonType: ButtonType, val progress: Float, val time: String, val showCursor: Boolean, val playbackSpeed: Float, val eventSink: (event: VoiceMessageEvent) -> Unit, ) { - enum class Button { + enum class ButtonType { Play, Pause, Downloading, diff --git a/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageStateProvider.kt b/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageStateProvider.kt index d8ccb85832..dd8d222e69 100644 --- a/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageStateProvider.kt +++ b/libraries/voiceplayer/api/src/main/kotlin/io/element/android/libraries/voiceplayer/api/VoiceMessageStateProvider.kt @@ -14,29 +14,29 @@ open class VoiceMessageStateProvider : PreviewParameterProvider get() = sequenceOf( aVoiceMessageState( - VoiceMessageState.Button.Downloading, + VoiceMessageState.ButtonType.Downloading, progress = 0f, time = "0:00", ), aVoiceMessageState( - VoiceMessageState.Button.Retry, + VoiceMessageState.ButtonType.Retry, progress = 0.5f, time = "0:01", ), aVoiceMessageState( - VoiceMessageState.Button.Play, + VoiceMessageState.ButtonType.Play, progress = 1f, time = "1:00", showCursor = true, ), aVoiceMessageState( - VoiceMessageState.Button.Pause, + VoiceMessageState.ButtonType.Pause, progress = 0.2f, time = "10:00", showCursor = true, ), aVoiceMessageState( - VoiceMessageState.Button.Disabled, + VoiceMessageState.ButtonType.Disabled, progress = 0.2f, time = "30:00", ), @@ -44,13 +44,13 @@ open class VoiceMessageStateProvider : PreviewParameterProvider VoiceMessageState.Button.Disabled - playerState.isPlaying -> VoiceMessageState.Button.Pause - play.value is AsyncData.Loading -> VoiceMessageState.Button.Downloading - play.value is AsyncData.Failure -> VoiceMessageState.Button.Retry - else -> VoiceMessageState.Button.Play + eventId == null -> VoiceMessageState.ButtonType.Disabled + playerState.isPlaying -> VoiceMessageState.ButtonType.Pause + play.value is AsyncData.Loading -> VoiceMessageState.ButtonType.Downloading + play.value is AsyncData.Failure -> VoiceMessageState.ButtonType.Retry + else -> VoiceMessageState.ButtonType.Play } } } @@ -122,7 +122,7 @@ class VoiceMessagePresenter( } return VoiceMessageState( - button = button, + buttonType = buttonType, progress = progress, time = time, showCursor = showCursor, diff --git a/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenterTest.kt b/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenterTest.kt index 3d9c452c2a..e6ae760b53 100644 --- a/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenterTest.kt +++ b/libraries/voiceplayer/impl/src/test/kotlin/io/element/android/libraries/voiceplayer/impl/VoiceMessagePresenterTest.kt @@ -31,7 +31,7 @@ class VoiceMessagePresenterTest { val presenter = createVoiceMessagePresenter() presenter.test { awaitItem().let { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("1:01") } @@ -46,7 +46,7 @@ class VoiceMessagePresenterTest { ) presenter.test { val initialState = awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:02") } @@ -54,17 +54,17 @@ class VoiceMessagePresenterTest { initialState.eventSink(VoiceMessageEvent.PlayPause) awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Downloading) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:02") } awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Downloading) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:00") } awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Pause) assertThat(it.progress).isEqualTo(0.5f) assertThat(it.time).isEqualTo("0:01") } @@ -82,7 +82,7 @@ class VoiceMessagePresenterTest { ) presenter.test { val initialState = awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:02") } @@ -90,12 +90,12 @@ class VoiceMessagePresenterTest { initialState.eventSink(VoiceMessageEvent.PlayPause) awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Downloading) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:02") } awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Retry) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Retry) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:02") } @@ -116,7 +116,7 @@ class VoiceMessagePresenterTest { ) presenter.test { val initialState = awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:02") } @@ -125,14 +125,14 @@ class VoiceMessagePresenterTest { skipItems(2) // skip downloading states val playingState = awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Pause) assertThat(it.progress).isEqualTo(0.5f) assertThat(it.time).isEqualTo("0:01") } playingState.eventSink(VoiceMessageEvent.PlayPause) awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0.5f) assertThat(it.time).isEqualTo("0:01") } @@ -146,7 +146,7 @@ class VoiceMessagePresenterTest { ) presenter.test { awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Disabled) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Disabled) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("1:01") } @@ -161,7 +161,7 @@ class VoiceMessagePresenterTest { ) presenter.test { val initialState = awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:10") } @@ -169,7 +169,7 @@ class VoiceMessagePresenterTest { initialState.eventSink(VoiceMessageEvent.Seek(0.5f)) awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0.5f) assertThat(it.time).isEqualTo("0:05") } @@ -183,7 +183,7 @@ class VoiceMessagePresenterTest { ) presenter.test { val initialState = awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play) assertThat(it.progress).isEqualTo(0f) assertThat(it.time).isEqualTo("0:10") } @@ -193,14 +193,14 @@ class VoiceMessagePresenterTest { skipItems(2) // skip downloading states awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Pause) assertThat(it.progress).isEqualTo(0.1f) assertThat(it.time).isEqualTo("0:01") it.eventSink(VoiceMessageEvent.Seek(0.5f)) } awaitItem().also { - assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause) + assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Pause) assertThat(it.progress).isEqualTo(0.5f) assertThat(it.time).isEqualTo("0:05") }