Skip to content

Commit f885285

Browse files
author
Florian Renaud
committed
Convert state enum to sealed interface
1 parent e384669 commit f885285

File tree

3 files changed

+47
-47
lines changed

3 files changed

+47
-47
lines changed

vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceBroadcastListeningItem.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageVoiceBroadcastItem
6363
playPauseButton.setOnClickListener {
6464
if (player.currentVoiceBroadcast == voiceBroadcast) {
6565
when (player.playingState) {
66-
VoiceBroadcastPlayer.State.PLAYING,
67-
VoiceBroadcastPlayer.State.BUFFERING -> callback?.onTimelineItemAction(VoiceBroadcastAction.Listening.Pause)
68-
VoiceBroadcastPlayer.State.PAUSED,
69-
VoiceBroadcastPlayer.State.IDLE -> callback?.onTimelineItemAction(VoiceBroadcastAction.Listening.PlayOrResume(voiceBroadcast))
66+
VoiceBroadcastPlayer.State.Playing,
67+
VoiceBroadcastPlayer.State.Buffering -> callback?.onTimelineItemAction(VoiceBroadcastAction.Listening.Pause)
68+
VoiceBroadcastPlayer.State.Paused,
69+
VoiceBroadcastPlayer.State.Idle -> callback?.onTimelineItemAction(VoiceBroadcastAction.Listening.PlayOrResume(voiceBroadcast))
7070
}
7171
} else {
7272
callback?.onTimelineItemAction(VoiceBroadcastAction.Listening.PlayOrResume(voiceBroadcast))
@@ -100,17 +100,17 @@ abstract class MessageVoiceBroadcastListeningItem : AbsMessageVoiceBroadcastItem
100100

101101
private fun renderPlayingState(holder: Holder, state: VoiceBroadcastPlayer.State) {
102102
with(holder) {
103-
bufferingView.isVisible = state == VoiceBroadcastPlayer.State.BUFFERING
104-
voiceBroadcastMetadata.isVisible = state != VoiceBroadcastPlayer.State.BUFFERING
103+
bufferingView.isVisible = state == VoiceBroadcastPlayer.State.Buffering
104+
voiceBroadcastMetadata.isVisible = state != VoiceBroadcastPlayer.State.Buffering
105105

106106
when (state) {
107-
VoiceBroadcastPlayer.State.PLAYING,
108-
VoiceBroadcastPlayer.State.BUFFERING -> {
107+
VoiceBroadcastPlayer.State.Playing,
108+
VoiceBroadcastPlayer.State.Buffering -> {
109109
playPauseButton.setImageResource(R.drawable.ic_play_pause_pause)
110110
playPauseButton.contentDescription = view.resources.getString(R.string.a11y_pause_voice_broadcast)
111111
}
112-
VoiceBroadcastPlayer.State.IDLE,
113-
VoiceBroadcastPlayer.State.PAUSED -> {
112+
VoiceBroadcastPlayer.State.Idle,
113+
VoiceBroadcastPlayer.State.Paused -> {
114114
playPauseButton.setImageResource(R.drawable.ic_play_pause_play)
115115
playPauseButton.contentDescription = view.resources.getString(R.string.a11y_play_voice_broadcast)
116116
}

vector/src/main/java/im/vector/app/features/voicebroadcast/listening/VoiceBroadcastPlayer.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ interface VoiceBroadcastPlayer {
2626
val currentVoiceBroadcast: VoiceBroadcast?
2727

2828
/**
29-
* The current playing [State], [State.IDLE] by default.
29+
* The current playing [State], [State.Idle] by default.
3030
*/
3131
val playingState: State
3232

@@ -68,11 +68,11 @@ interface VoiceBroadcastPlayer {
6868
/**
6969
* Player states.
7070
*/
71-
enum class State {
72-
PLAYING,
73-
PAUSED,
74-
BUFFERING,
75-
IDLE
71+
sealed interface State {
72+
object Playing : State
73+
object Paused : State
74+
object Buffering : State
75+
object Idle : State
7676
}
7777

7878
/**

vector/src/main/java/im/vector/app/features/voicebroadcast/listening/VoiceBroadcastPlayerImpl.kt

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
7979
}
8080
}
8181

82-
override var playingState = State.IDLE
82+
override var playingState: State = State.Idle
8383
@MainThread
8484
set(value) {
8585
if (field != value) {
@@ -96,7 +96,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
9696
val hasChanged = currentVoiceBroadcast != voiceBroadcast
9797
when {
9898
hasChanged -> startPlayback(voiceBroadcast)
99-
playingState == State.PAUSED -> resumePlayback()
99+
playingState == State.Paused -> resumePlayback()
100100
else -> Unit
101101
}
102102
}
@@ -107,7 +107,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
107107

108108
override fun stop() {
109109
// Update state
110-
playingState = State.IDLE
110+
playingState = State.Idle
111111

112112
// Stop and release media players
113113
stopPlayer()
@@ -129,7 +129,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
129129
listeners[voiceBroadcast.voiceBroadcastId]?.add(listener) ?: run {
130130
listeners[voiceBroadcast.voiceBroadcastId] = CopyOnWriteArrayList<Listener>().apply { add(listener) }
131131
}
132-
listener.onPlayingStateChanged(if (voiceBroadcast == currentVoiceBroadcast) playingState else State.IDLE)
132+
listener.onPlayingStateChanged(if (voiceBroadcast == currentVoiceBroadcast) playingState else State.Idle)
133133
listener.onLiveModeChanged(voiceBroadcast == currentVoiceBroadcast)
134134
}
135135

@@ -139,11 +139,11 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
139139

140140
private fun startPlayback(voiceBroadcast: VoiceBroadcast) {
141141
// Stop listening previous voice broadcast if any
142-
if (playingState != State.IDLE) stop()
142+
if (playingState != State.Idle) stop()
143143

144144
currentVoiceBroadcast = voiceBroadcast
145145

146-
playingState = State.BUFFERING
146+
playingState = State.Buffering
147147

148148
observeVoiceBroadcastStateEvent(voiceBroadcast)
149149
}
@@ -175,13 +175,13 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
175175

176176
private fun onPlaylistUpdated() {
177177
when (playingState) {
178-
State.PLAYING,
179-
State.PAUSED -> {
178+
State.Playing,
179+
State.Paused -> {
180180
if (nextMediaPlayer == null && !isPreparingNextPlayer) {
181181
prepareNextMediaPlayer()
182182
}
183183
}
184-
State.BUFFERING -> {
184+
State.Buffering -> {
185185
val nextItem = if (isLiveListening && playlist.currentSequence == null) {
186186
// live listening, jump to the last item if playback has not started
187187
playlist.lastOrNull()
@@ -193,7 +193,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
193193
startPlayback(nextItem.startTime)
194194
}
195195
}
196-
State.IDLE -> Unit // Should not happen
196+
State.Idle -> Unit // Should not happen
197197
}
198198
}
199199

@@ -213,7 +213,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
213213
if (sequencePosition > 0) {
214214
mp.seekTo(sequencePosition)
215215
}
216-
playingState = State.PLAYING
216+
playingState = State.Playing
217217
prepareNextMediaPlayer()
218218
}
219219
} catch (failure: Throwable) {
@@ -224,7 +224,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
224224
}
225225

226226
private fun pausePlayback() {
227-
playingState = State.PAUSED // This will trigger a playing state update and save the current position
227+
playingState = State.Paused // This will trigger a playing state update and save the current position
228228
if (currentMediaPlayer != null) {
229229
currentMediaPlayer?.pause()
230230
} else {
@@ -234,7 +234,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
234234

235235
private fun resumePlayback() {
236236
if (currentMediaPlayer != null) {
237-
playingState = State.PLAYING
237+
playingState = State.Playing
238238
currentMediaPlayer?.start()
239239
} else {
240240
val savedPosition = currentVoiceBroadcast?.voiceBroadcastId?.let { playbackTracker.getPlaybackTime(it) } ?: 0
@@ -247,11 +247,11 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
247247
voiceBroadcast != currentVoiceBroadcast -> {
248248
playbackTracker.updatePausedAtPlaybackTime(voiceBroadcast.voiceBroadcastId, positionMillis, positionMillis.toFloat() / duration)
249249
}
250-
playingState == State.PLAYING || playingState == State.BUFFERING -> {
250+
playingState == State.Playing || playingState == State.Buffering -> {
251251
updateLiveListeningMode(positionMillis)
252252
startPlayback(positionMillis)
253253
}
254-
playingState == State.IDLE || playingState == State.PAUSED -> {
254+
playingState == State.Idle || playingState == State.Paused -> {
255255
stopPlayer()
256256
playbackTracker.updatePausedAtPlaybackTime(voiceBroadcast.voiceBroadcastId, positionMillis, positionMillis.toFloat() / duration)
257257
}
@@ -267,15 +267,15 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
267267
isPreparingNextPlayer = false
268268
nextMediaPlayer = mp
269269
when (playingState) {
270-
State.PLAYING,
271-
State.PAUSED -> {
270+
State.Playing,
271+
State.Paused -> {
272272
currentMediaPlayer?.setNextMediaPlayer(mp)
273273
}
274-
State.BUFFERING -> {
274+
State.Buffering -> {
275275
mp.start()
276276
onNextMediaPlayerStarted(mp)
277277
}
278-
State.IDLE -> stopPlayer()
278+
State.Idle -> stopPlayer()
279279
}
280280
}
281281
}
@@ -327,10 +327,10 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
327327
currentVoiceBroadcast?.voiceBroadcastId?.let { voiceBroadcastId ->
328328
// Start or stop playback ticker
329329
when (playingState) {
330-
State.PLAYING -> playbackTicker.startPlaybackTicker(voiceBroadcastId)
331-
State.PAUSED,
332-
State.BUFFERING,
333-
State.IDLE -> playbackTicker.stopPlaybackTicker(voiceBroadcastId)
330+
State.Playing -> playbackTicker.startPlaybackTicker(voiceBroadcastId)
331+
State.Paused,
332+
State.Buffering,
333+
State.Idle -> playbackTicker.stopPlaybackTicker(voiceBroadcastId)
334334
}
335335
// Notify state change to all the listeners attached to the current voice broadcast id
336336
listeners[voiceBroadcastId]?.forEach { listener -> listener.onPlayingStateChanged(playingState) }
@@ -348,7 +348,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
348348
// the current voice broadcast is not live (ended)
349349
mostRecentVoiceBroadcastEvent?.isLive != true -> false
350350
// the player is stopped or paused
351-
playingState == State.IDLE || playingState == State.PAUSED -> false
351+
playingState == State.Idle || playingState == State.Paused -> false
352352
seekPosition != null -> {
353353
val seekDirection = seekPosition.compareTo(getCurrentPlaybackPosition() ?: 0)
354354
val newSequence = playlist.findByPosition(seekPosition)?.sequence
@@ -374,13 +374,13 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
374374

375375
private fun onLiveListeningChanged(isLiveListening: Boolean) {
376376
// Live has ended and last chunk has been reached, we can stop the playback
377-
if (!isLiveListening && playingState == State.BUFFERING && playlist.currentSequence == mostRecentVoiceBroadcastEvent?.content?.lastChunkSequence) {
377+
if (!isLiveListening && playingState == State.Buffering && playlist.currentSequence == mostRecentVoiceBroadcastEvent?.content?.lastChunkSequence) {
378378
stop()
379379
}
380380
}
381381

382382
private fun onNextMediaPlayerStarted(mp: MediaPlayer) {
383-
playingState = State.PLAYING
383+
playingState = State.Playing
384384
playlist.currentSequence = playlist.currentSequence?.inc()
385385
currentMediaPlayer = mp
386386
nextMediaPlayer = null
@@ -427,7 +427,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
427427
stop()
428428
} else {
429429
// Enter in buffering mode and release current media player
430-
playingState = State.BUFFERING
430+
playingState = State.Buffering
431431
currentMediaPlayer?.release()
432432
currentMediaPlayer = null
433433
}
@@ -462,18 +462,18 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
462462
val playbackTime = getCurrentPlaybackPosition()
463463
val percentage = getCurrentPlaybackPercentage()
464464
when (playingState) {
465-
State.PLAYING -> {
465+
State.Playing -> {
466466
if (playbackTime != null && percentage != null) {
467467
playbackTracker.updatePlayingAtPlaybackTime(id, playbackTime, percentage)
468468
}
469469
}
470-
State.PAUSED,
471-
State.BUFFERING -> {
470+
State.Paused,
471+
State.Buffering -> {
472472
if (playbackTime != null && percentage != null) {
473473
playbackTracker.updatePausedAtPlaybackTime(id, playbackTime, percentage)
474474
}
475475
}
476-
State.IDLE -> {
476+
State.Idle -> {
477477
if (playbackTime == null || percentage == null || (playlist.duration - playbackTime) < 50) {
478478
playbackTracker.stopPlayback(id)
479479
} else {

0 commit comments

Comments
 (0)