diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaPlayerManager.kt b/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaPlayerManager.kt index 221b5228a..d08bb2c08 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaPlayerManager.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaPlayerManager.kt @@ -183,19 +183,26 @@ class MediaPlayerManager : LifecycleAwareManager { continue } - if (mediaPlayer != null && mediaPlayer?.isPlaying == true) { - val pos = mediaPlayer!!.currentPosition + mediaPlayer?.let { player -> + try { + if (!player.isPlaying) return@let + } catch (e: IllegalStateException) { + Log.e(TAG, "Seekbar updated during an improper state: $e") + return@let + } + + val pos = player.currentPosition mediaPlayerPosition = pos val progress = (pos.toFloat() / mediaPlayerDuration) * DIVIDER val progressI = ceil(progress).toInt() val seconds = (pos / ONE_SEC) _mediaPlayerSeekBarPosition.emit(progressI) - currentCycledMessage?.let { - it.isPlayingVoiceMessage = true - it.voiceMessageSeekbarProgress = progressI - it.voiceMessagePlayedSeconds = seconds - if (progressI >= IS_PLAYED_CUTOFF) it.wasPlayedVoiceMessage = true - _mediaPlayerSeekBarPositionMsg.emit(it) + currentCycledMessage?.let { msg -> + msg.isPlayingVoiceMessage = true + msg.voiceMessageSeekbarProgress = progressI + msg.voiceMessagePlayedSeconds = seconds + if (progressI >= IS_PLAYED_CUTOFF) msg.wasPlayedVoiceMessage = true + _mediaPlayerSeekBarPositionMsg.emit(msg) } }