From ff8e6b194e835285ff78dc88df416fc315be7cb5 Mon Sep 17 00:00:00 2001 From: Maxence G Date: Tue, 11 Jul 2023 23:18:53 +0200 Subject: [PATCH] Fix calling PageChangeCallback.onPageSelected before mediaPlayerManager is ready --- .../org/moire/ultrasonic/fragment/NowPlayingFragment.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/NowPlayingFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/NowPlayingFragment.kt index 7740d468..896a0acc 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/NowPlayingFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/NowPlayingFragment.kt @@ -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")