mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
Rename Button to ButtonType to avoid confusion.
This commit is contained in:
+14
-14
@@ -71,21 +71,21 @@ fun TimelineItemVoiceView(
|
|||||||
|
|
||||||
val a11y = stringResource(CommonStrings.common_voice_message)
|
val a11y = stringResource(CommonStrings.common_voice_message)
|
||||||
val a11yActionLabel = stringResource(
|
val a11yActionLabel = stringResource(
|
||||||
when (state.button) {
|
when (state.buttonType) {
|
||||||
VoiceMessageState.Button.Play -> CommonStrings.a11y_play
|
VoiceMessageState.ButtonType.Play -> CommonStrings.a11y_play
|
||||||
VoiceMessageState.Button.Pause -> CommonStrings.a11y_pause
|
VoiceMessageState.ButtonType.Pause -> CommonStrings.a11y_pause
|
||||||
VoiceMessageState.Button.Downloading -> CommonStrings.common_downloading
|
VoiceMessageState.ButtonType.Downloading -> CommonStrings.common_downloading
|
||||||
VoiceMessageState.Button.Retry -> CommonStrings.action_retry
|
VoiceMessageState.ButtonType.Retry -> CommonStrings.action_retry
|
||||||
VoiceMessageState.Button.Disabled -> CommonStrings.error_unknown
|
VoiceMessageState.ButtonType.Disabled -> CommonStrings.error_unknown
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
Row(
|
Row(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
.clearAndSetSemantics {
|
.clearAndSetSemantics {
|
||||||
contentDescription = a11y
|
contentDescription = a11y
|
||||||
if (state.button == VoiceMessageState.Button.Disabled) {
|
if (state.buttonType == VoiceMessageState.ButtonType.Disabled) {
|
||||||
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) {
|
onClick(label = a11yActionLabel) {
|
||||||
playPause()
|
playPause()
|
||||||
true
|
true
|
||||||
@@ -103,12 +103,12 @@ fun TimelineItemVoiceView(
|
|||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
if (!isTalkbackActive()) {
|
if (!isTalkbackActive()) {
|
||||||
when (state.button) {
|
when (state.buttonType) {
|
||||||
VoiceMessageState.Button.Play -> PlayButton(onClick = ::playPause)
|
VoiceMessageState.ButtonType.Play -> PlayButton(onClick = ::playPause)
|
||||||
VoiceMessageState.Button.Pause -> PauseButton(onClick = ::playPause)
|
VoiceMessageState.ButtonType.Pause -> PauseButton(onClick = ::playPause)
|
||||||
VoiceMessageState.Button.Downloading -> ProgressButton()
|
VoiceMessageState.ButtonType.Downloading -> ProgressButton()
|
||||||
VoiceMessageState.Button.Retry -> RetryButton(onClick = ::playPause)
|
VoiceMessageState.ButtonType.Retry -> RetryButton(onClick = ::playPause)
|
||||||
VoiceMessageState.Button.Disabled -> PlayButton(onClick = {}, enabled = false)
|
VoiceMessageState.ButtonType.Disabled -> PlayButton(onClick = {}, enabled = false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Spacer(Modifier.width(8.dp))
|
Spacer(Modifier.width(8.dp))
|
||||||
|
|||||||
+6
-6
@@ -114,12 +114,12 @@ private fun VoiceInfoRow(
|
|||||||
.padding(start = 12.dp, end = 36.dp, top = 8.dp, bottom = 8.dp),
|
.padding(start = 12.dp, end = 36.dp, top = 8.dp, bottom = 8.dp),
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
) {
|
) {
|
||||||
when (state.button) {
|
when (state.buttonType) {
|
||||||
VoiceMessageState.Button.Play -> PlayButton(onClick = ::playPause)
|
VoiceMessageState.ButtonType.Play -> PlayButton(onClick = ::playPause)
|
||||||
VoiceMessageState.Button.Pause -> PauseButton(onClick = ::playPause)
|
VoiceMessageState.ButtonType.Pause -> PauseButton(onClick = ::playPause)
|
||||||
VoiceMessageState.Button.Downloading -> ProgressButton()
|
VoiceMessageState.ButtonType.Downloading -> ProgressButton()
|
||||||
VoiceMessageState.Button.Retry -> RetryButton(onClick = ::playPause)
|
VoiceMessageState.ButtonType.Retry -> RetryButton(onClick = ::playPause)
|
||||||
VoiceMessageState.Button.Disabled -> PlayButton(onClick = {}, enabled = false)
|
VoiceMessageState.ButtonType.Disabled -> PlayButton(onClick = {}, enabled = false)
|
||||||
}
|
}
|
||||||
Spacer(Modifier.width(8.dp))
|
Spacer(Modifier.width(8.dp))
|
||||||
Column(
|
Column(
|
||||||
|
|||||||
+2
-2
@@ -9,14 +9,14 @@
|
|||||||
package io.element.android.libraries.voiceplayer.api
|
package io.element.android.libraries.voiceplayer.api
|
||||||
|
|
||||||
data class VoiceMessageState(
|
data class VoiceMessageState(
|
||||||
val button: Button,
|
val buttonType: ButtonType,
|
||||||
val progress: Float,
|
val progress: Float,
|
||||||
val time: String,
|
val time: String,
|
||||||
val showCursor: Boolean,
|
val showCursor: Boolean,
|
||||||
val playbackSpeed: Float,
|
val playbackSpeed: Float,
|
||||||
val eventSink: (event: VoiceMessageEvent) -> Unit,
|
val eventSink: (event: VoiceMessageEvent) -> Unit,
|
||||||
) {
|
) {
|
||||||
enum class Button {
|
enum class ButtonType {
|
||||||
Play,
|
Play,
|
||||||
Pause,
|
Pause,
|
||||||
Downloading,
|
Downloading,
|
||||||
|
|||||||
+7
-7
@@ -14,29 +14,29 @@ open class VoiceMessageStateProvider : PreviewParameterProvider<VoiceMessageStat
|
|||||||
override val values: Sequence<VoiceMessageState>
|
override val values: Sequence<VoiceMessageState>
|
||||||
get() = sequenceOf(
|
get() = sequenceOf(
|
||||||
aVoiceMessageState(
|
aVoiceMessageState(
|
||||||
VoiceMessageState.Button.Downloading,
|
VoiceMessageState.ButtonType.Downloading,
|
||||||
progress = 0f,
|
progress = 0f,
|
||||||
time = "0:00",
|
time = "0:00",
|
||||||
),
|
),
|
||||||
aVoiceMessageState(
|
aVoiceMessageState(
|
||||||
VoiceMessageState.Button.Retry,
|
VoiceMessageState.ButtonType.Retry,
|
||||||
progress = 0.5f,
|
progress = 0.5f,
|
||||||
time = "0:01",
|
time = "0:01",
|
||||||
),
|
),
|
||||||
aVoiceMessageState(
|
aVoiceMessageState(
|
||||||
VoiceMessageState.Button.Play,
|
VoiceMessageState.ButtonType.Play,
|
||||||
progress = 1f,
|
progress = 1f,
|
||||||
time = "1:00",
|
time = "1:00",
|
||||||
showCursor = true,
|
showCursor = true,
|
||||||
),
|
),
|
||||||
aVoiceMessageState(
|
aVoiceMessageState(
|
||||||
VoiceMessageState.Button.Pause,
|
VoiceMessageState.ButtonType.Pause,
|
||||||
progress = 0.2f,
|
progress = 0.2f,
|
||||||
time = "10:00",
|
time = "10:00",
|
||||||
showCursor = true,
|
showCursor = true,
|
||||||
),
|
),
|
||||||
aVoiceMessageState(
|
aVoiceMessageState(
|
||||||
VoiceMessageState.Button.Disabled,
|
VoiceMessageState.ButtonType.Disabled,
|
||||||
progress = 0.2f,
|
progress = 0.2f,
|
||||||
time = "30:00",
|
time = "30:00",
|
||||||
),
|
),
|
||||||
@@ -44,13 +44,13 @@ open class VoiceMessageStateProvider : PreviewParameterProvider<VoiceMessageStat
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun aVoiceMessageState(
|
fun aVoiceMessageState(
|
||||||
button: VoiceMessageState.Button = VoiceMessageState.Button.Play,
|
buttonType: VoiceMessageState.ButtonType = VoiceMessageState.ButtonType.Play,
|
||||||
progress: Float = 0f,
|
progress: Float = 0f,
|
||||||
time: String = "1:00",
|
time: String = "1:00",
|
||||||
showCursor: Boolean = false,
|
showCursor: Boolean = false,
|
||||||
playbackSpeed: Float = 1.0f,
|
playbackSpeed: Float = 1.0f,
|
||||||
) = VoiceMessageState(
|
) = VoiceMessageState(
|
||||||
button = button,
|
buttonType = buttonType,
|
||||||
progress = progress,
|
progress = progress,
|
||||||
time = time,
|
time = time,
|
||||||
showCursor = showCursor,
|
showCursor = showCursor,
|
||||||
|
|||||||
+7
-7
@@ -53,14 +53,14 @@ class VoiceMessagePresenter(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val button by remember {
|
val buttonType by remember {
|
||||||
derivedStateOf {
|
derivedStateOf {
|
||||||
when {
|
when {
|
||||||
eventId == null -> VoiceMessageState.Button.Disabled
|
eventId == null -> VoiceMessageState.ButtonType.Disabled
|
||||||
playerState.isPlaying -> VoiceMessageState.Button.Pause
|
playerState.isPlaying -> VoiceMessageState.ButtonType.Pause
|
||||||
play.value is AsyncData.Loading -> VoiceMessageState.Button.Downloading
|
play.value is AsyncData.Loading -> VoiceMessageState.ButtonType.Downloading
|
||||||
play.value is AsyncData.Failure -> VoiceMessageState.Button.Retry
|
play.value is AsyncData.Failure -> VoiceMessageState.ButtonType.Retry
|
||||||
else -> VoiceMessageState.Button.Play
|
else -> VoiceMessageState.ButtonType.Play
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ class VoiceMessagePresenter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return VoiceMessageState(
|
return VoiceMessageState(
|
||||||
button = button,
|
buttonType = buttonType,
|
||||||
progress = progress,
|
progress = progress,
|
||||||
time = time,
|
time = time,
|
||||||
showCursor = showCursor,
|
showCursor = showCursor,
|
||||||
|
|||||||
+17
-17
@@ -31,7 +31,7 @@ class VoiceMessagePresenterTest {
|
|||||||
val presenter = createVoiceMessagePresenter()
|
val presenter = createVoiceMessagePresenter()
|
||||||
presenter.test {
|
presenter.test {
|
||||||
awaitItem().let {
|
awaitItem().let {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play)
|
||||||
assertThat(it.progress).isEqualTo(0f)
|
assertThat(it.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("1:01")
|
assertThat(it.time).isEqualTo("1:01")
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ class VoiceMessagePresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitItem().also {
|
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.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:02")
|
assertThat(it.time).isEqualTo("0:02")
|
||||||
}
|
}
|
||||||
@@ -54,17 +54,17 @@ class VoiceMessagePresenterTest {
|
|||||||
initialState.eventSink(VoiceMessageEvent.PlayPause)
|
initialState.eventSink(VoiceMessageEvent.PlayPause)
|
||||||
|
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Downloading)
|
||||||
assertThat(it.progress).isEqualTo(0f)
|
assertThat(it.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:02")
|
assertThat(it.time).isEqualTo("0:02")
|
||||||
}
|
}
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Downloading)
|
||||||
assertThat(it.progress).isEqualTo(0f)
|
assertThat(it.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:00")
|
assertThat(it.time).isEqualTo("0:00")
|
||||||
}
|
}
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Pause)
|
||||||
assertThat(it.progress).isEqualTo(0.5f)
|
assertThat(it.progress).isEqualTo(0.5f)
|
||||||
assertThat(it.time).isEqualTo("0:01")
|
assertThat(it.time).isEqualTo("0:01")
|
||||||
}
|
}
|
||||||
@@ -82,7 +82,7 @@ class VoiceMessagePresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitItem().also {
|
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.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:02")
|
assertThat(it.time).isEqualTo("0:02")
|
||||||
}
|
}
|
||||||
@@ -90,12 +90,12 @@ class VoiceMessagePresenterTest {
|
|||||||
initialState.eventSink(VoiceMessageEvent.PlayPause)
|
initialState.eventSink(VoiceMessageEvent.PlayPause)
|
||||||
|
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Downloading)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Downloading)
|
||||||
assertThat(it.progress).isEqualTo(0f)
|
assertThat(it.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:02")
|
assertThat(it.time).isEqualTo("0:02")
|
||||||
}
|
}
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Retry)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Retry)
|
||||||
assertThat(it.progress).isEqualTo(0f)
|
assertThat(it.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:02")
|
assertThat(it.time).isEqualTo("0:02")
|
||||||
}
|
}
|
||||||
@@ -116,7 +116,7 @@ class VoiceMessagePresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitItem().also {
|
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.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:02")
|
assertThat(it.time).isEqualTo("0:02")
|
||||||
}
|
}
|
||||||
@@ -125,14 +125,14 @@ class VoiceMessagePresenterTest {
|
|||||||
skipItems(2) // skip downloading states
|
skipItems(2) // skip downloading states
|
||||||
|
|
||||||
val playingState = awaitItem().also {
|
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.progress).isEqualTo(0.5f)
|
||||||
assertThat(it.time).isEqualTo("0:01")
|
assertThat(it.time).isEqualTo("0:01")
|
||||||
}
|
}
|
||||||
|
|
||||||
playingState.eventSink(VoiceMessageEvent.PlayPause)
|
playingState.eventSink(VoiceMessageEvent.PlayPause)
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play)
|
||||||
assertThat(it.progress).isEqualTo(0.5f)
|
assertThat(it.progress).isEqualTo(0.5f)
|
||||||
assertThat(it.time).isEqualTo("0:01")
|
assertThat(it.time).isEqualTo("0:01")
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ class VoiceMessagePresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Disabled)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Disabled)
|
||||||
assertThat(it.progress).isEqualTo(0f)
|
assertThat(it.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("1:01")
|
assertThat(it.time).isEqualTo("1:01")
|
||||||
}
|
}
|
||||||
@@ -161,7 +161,7 @@ class VoiceMessagePresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitItem().also {
|
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.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:10")
|
assertThat(it.time).isEqualTo("0:10")
|
||||||
}
|
}
|
||||||
@@ -169,7 +169,7 @@ class VoiceMessagePresenterTest {
|
|||||||
initialState.eventSink(VoiceMessageEvent.Seek(0.5f))
|
initialState.eventSink(VoiceMessageEvent.Seek(0.5f))
|
||||||
|
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Play)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Play)
|
||||||
assertThat(it.progress).isEqualTo(0.5f)
|
assertThat(it.progress).isEqualTo(0.5f)
|
||||||
assertThat(it.time).isEqualTo("0:05")
|
assertThat(it.time).isEqualTo("0:05")
|
||||||
}
|
}
|
||||||
@@ -183,7 +183,7 @@ class VoiceMessagePresenterTest {
|
|||||||
)
|
)
|
||||||
presenter.test {
|
presenter.test {
|
||||||
val initialState = awaitItem().also {
|
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.progress).isEqualTo(0f)
|
||||||
assertThat(it.time).isEqualTo("0:10")
|
assertThat(it.time).isEqualTo("0:10")
|
||||||
}
|
}
|
||||||
@@ -193,14 +193,14 @@ class VoiceMessagePresenterTest {
|
|||||||
skipItems(2) // skip downloading states
|
skipItems(2) // skip downloading states
|
||||||
|
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Pause)
|
||||||
assertThat(it.progress).isEqualTo(0.1f)
|
assertThat(it.progress).isEqualTo(0.1f)
|
||||||
assertThat(it.time).isEqualTo("0:01")
|
assertThat(it.time).isEqualTo("0:01")
|
||||||
it.eventSink(VoiceMessageEvent.Seek(0.5f))
|
it.eventSink(VoiceMessageEvent.Seek(0.5f))
|
||||||
}
|
}
|
||||||
|
|
||||||
awaitItem().also {
|
awaitItem().also {
|
||||||
assertThat(it.button).isEqualTo(VoiceMessageState.Button.Pause)
|
assertThat(it.buttonType).isEqualTo(VoiceMessageState.ButtonType.Pause)
|
||||||
assertThat(it.progress).isEqualTo(0.5f)
|
assertThat(it.progress).isEqualTo(0.5f)
|
||||||
assertThat(it.time).isEqualTo("0:05")
|
assertThat(it.time).isEqualTo("0:05")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user