diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 005f38ec7..310eec3ab 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -31,6 +31,9 @@ # RetroFit -dontwarn retrofit.** -keep class retrofit.** { *; } +-keep,allowobfuscation,allowshrinking interface retrofit2.Call +-keep,allowobfuscation,allowshrinking class retrofit2.Response +-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation # Glide -keep public class * implements com.bumptech.glide.module.GlideModule diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index a337487fc..5de5ae9e5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -117,9 +117,6 @@ class MainActivity : AbsCastActivity() { } } - override fun onSupportNavigateUp(): Boolean = - findNavController(R.id.fragment_container).navigateUp() - override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) val expand = intent?.extra(EXPAND_PANEL)?.value ?: false diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt index 67c61ca5a..ad3987665 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/base/AbsSlidingMusicPanelActivity.kt @@ -33,6 +33,7 @@ import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.fragment.app.commit +import androidx.navigation.fragment.NavHostFragment import code.name.monkey.appthemehelper.util.VersionUtils import code.name.monkey.retromusic.ADAPTIVE_COLOR_APP import code.name.monkey.retromusic.ALBUM_COVER_STYLE @@ -132,6 +133,8 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), private val panelState: Int get() = bottomSheetBehavior.state + private var panelStateBefore: Int? = null + private var panelStateCurrent: Int? = null private lateinit var binding: SlidingMusicPanelLayoutBinding private var isInOneTabMode = false @@ -140,10 +143,13 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { - println("Handle back press ${bottomSheetBehavior.state}") - if (!handleBackPress()) { - remove() - onBackPressedDispatcher.onBackPressed() + if (handleBackPress()) { + return + } + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment + if (!navHostFragment.navController.navigateUp()) { + finish() } } } @@ -164,7 +170,10 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), } override fun onStateChanged(bottomSheet: View, newState: Int) { - onBackPressedCallback.isEnabled = newState == STATE_EXPANDED + if (panelStateCurrent != null) { + panelStateBefore = panelStateCurrent + } + panelStateCurrent = newState when (newState) { STATE_EXPANDED -> { onPanelExpanded() @@ -224,7 +233,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), navigationBarColor = surfaceColor() - onBackPressedDispatcher.addCallback(onBackPressedCallback) + onBackPressedDispatcher.addCallback(this, onBackPressedCallback) } private fun setupBottomSheet() { @@ -276,7 +285,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), ALBUM_COVER_TRANSFORM, CAROUSEL_EFFECT, ALBUM_COVER_STYLE, TOGGLE_VOLUME, EXTRA_SONG_INFO, CIRCLE_PLAY_BUTTON, - -> { + -> { chooseFragmentForTheme() onServiceConnected() } @@ -408,7 +417,7 @@ abstract class AbsSlidingMusicPanelActivity : AbsMusicServiceActivity(), } private fun handleBackPress(): Boolean { - if (panelState == STATE_EXPANDED) { + if (panelState == STATE_EXPANDED || (panelState == STATE_SETTLING && panelStateBefore != STATE_EXPANDED)) { collapsePanel() return true }