Fix calling PageChangeCallback.onPageSelected before mediaPlayerManager is ready

This commit is contained in:
Maxence G 2023-07-11 23:18:53 +02:00
parent 45c5a029b1
commit ff8e6b194e
No known key found for this signature in database
GPG Key ID: DC1FD9409E3FE284

View File

@ -39,6 +39,7 @@ import timber.log.Timber
* Contains the mini-now playing information box displayed at the bottom of the screen
*/
class NowPlayingFragment : Fragment() {
private var isInitialized = false
private lateinit var nowPlayingCollectionAdapter: NowPlayingCollectionAdapter
private lateinit var viewPager: ViewPager2
private var rxBusSubscription: Disposable? = null
@ -68,6 +69,7 @@ class NowPlayingFragment : Fragment() {
rxBusSubscription = RxBus.playerStateObservable.subscribe {
if (it.state == Player.STATE_READY) {
viewPager.setCurrentItem(it.index, true)
isInitialized = true
}
}
@ -82,6 +84,7 @@ class NowPlayingFragment : Fragment() {
private inner class PageChangeCallback : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
if (!isInitialized) return
val newIndex = mediaPlayerManager.getUnshuffledIndexOf(position)
if (mediaPlayerManager.currentMediaItemIndex != newIndex) {
mediaPlayerManager.seekTo(newIndex, 0)
@ -153,7 +156,7 @@ class NowPlayingChildFragment(private val mediaItem: MediaItem?) : Fragment() {
override fun onDestroy() {
super.onDestroy()
rxBusSubscription!!.dispose()
rxBusSubscription?.dispose()
}
@SuppressLint("ClickableViewAccessibility")