diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt index 5e18f335..5e442e26 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt @@ -558,8 +558,8 @@ class VideoDetailView : ConstraintLayout { _loaderGameVisible = b fragment.lifecycleScope.launch(Dispatchers.Main) { onShouldEnterPictureInPictureChanged.emit() + updateResumeVisibilityFor(lastPositionMilliseconds) } - updateResumeVisibilityFor(lastPositionMilliseconds) } _player.loaderGameVisibilityChanged.subscribe(handleLoaderGameVisibilityChanged) _cast.loaderGameVisibilityChanged.subscribe(handleLoaderGameVisibilityChanged) diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt index fa2fb58b..2e4845fb 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt @@ -247,17 +247,29 @@ class StatePlayer { } private fun createShuffledQueue() { - val currentItem = getCurrentQueueItem(); - if (_queuePosition == -1 || currentItem == null) { - _queueShuffled = _queue.shuffled().toMutableList() - return; + if (_queue.isEmpty()) { + _queueShuffled = mutableListOf() + return } - val nextItems = _queue.subList(Math.min(_queuePosition + 1, _queue.size - 1), _queue.size).shuffled(); - val previousItems = _queue.subList(0, _queuePosition).shuffled(); - _queueShuffled = (previousItems + currentItem + nextItems).toMutableList(); + val currentItem = getCurrentQueueItem() + if (currentItem == null || _queuePosition !in _queue.indices) { + _queueShuffled = _queue.shuffled().toMutableList() + return + } + + val previousItems = _queue + .take(_queuePosition) + .shuffled() + + val nextItems = _queue + .drop(_queuePosition + 1) + .shuffled() + + _queueShuffled = (previousItems + currentItem + nextItems).toMutableList() } + private fun addToShuffledQueue(video: IPlatformVideo) { val isLastVideo = _queuePosition + 1 >= _queue.size; if (isLastVideo) {