Fix regression which caused the player UI to be dismissed already

This commit is contained in:
vfsfitvnm 2022-08-26 20:15:54 +02:00
parent 3117ea253e
commit 45810496e7
2 changed files with 18 additions and 8 deletions

View file

@ -57,6 +57,9 @@ import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness
import it.vfsfitvnm.vimusic.service.PlayerService import it.vfsfitvnm.vimusic.service.PlayerService
import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu import it.vfsfitvnm.vimusic.ui.components.BottomSheetMenu
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.collapsedAnchor
import it.vfsfitvnm.vimusic.ui.components.dismissedAnchor
import it.vfsfitvnm.vimusic.ui.components.expandedAnchor
import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState import it.vfsfitvnm.vimusic.ui.components.rememberBottomSheetState
import it.vfsfitvnm.vimusic.ui.screens.HomeScreen import it.vfsfitvnm.vimusic.ui.screens.HomeScreen
import it.vfsfitvnm.vimusic.ui.screens.IntentUriScreen import it.vfsfitvnm.vimusic.ui.screens.IntentUriScreen
@ -80,6 +83,10 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
companion object {
private var alreadyRunning = false
}
private val serviceConnection = object : ServiceConnection { private val serviceConnection = object : ServiceConnection {
override fun onServiceConnected(name: ComponentName?, service: IBinder?) { override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
if (service is PlayerService.Binder) { if (service is PlayerService.Binder) {
@ -111,8 +118,11 @@ class MainActivity : ComponentActivity() {
WindowCompat.setDecorFitsSystemWindows(window, false) WindowCompat.setDecorFitsSystemWindows(window, false)
val expandPlayerBottomSheet = val playerBottomSheetAnchor = when {
intent?.extras?.getBoolean("expandPlayerBottomSheet", false) ?: false intent?.extras?.getBoolean("expandPlayerBottomSheet") == true -> expandedAnchor
alreadyRunning -> collapsedAnchor
else -> dismissedAnchor.also { alreadyRunning = true }
}
uri = intent?.data uri = intent?.data
@ -291,7 +301,7 @@ class MainActivity : ComponentActivity() {
dismissedBound = 0.dp, dismissedBound = 0.dp,
collapsedBound = Dimensions.collapsedPlayer + paddingValues.calculateBottomPadding(), collapsedBound = Dimensions.collapsedPlayer + paddingValues.calculateBottomPadding(),
expandedBound = maxHeight, expandedBound = maxHeight,
isExpanded = expandPlayerBottomSheet initialAnchor = playerBottomSheetAnchor
) )
val playerAwarePaddingValues = if (playerBottomSheetState.isDismissed) { val playerAwarePaddingValues = if (playerBottomSheetState.isDismissed) {

View file

@ -266,22 +266,22 @@ class BottomSheetState(
} }
} }
private const val expandedAnchor = 2 const val expandedAnchor = 2
private const val collapsedAnchor = 1 const val collapsedAnchor = 1
private const val dismissedAnchor = 0 const val dismissedAnchor = 0
@Composable @Composable
fun rememberBottomSheetState( fun rememberBottomSheetState(
dismissedBound: Dp, dismissedBound: Dp,
expandedBound: Dp, expandedBound: Dp,
collapsedBound: Dp = dismissedBound, collapsedBound: Dp = dismissedBound,
isExpanded: Boolean = false initialAnchor: Int = dismissedAnchor
): BottomSheetState { ): BottomSheetState {
val density = LocalDensity.current val density = LocalDensity.current
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
var previousAnchor by rememberSaveable { var previousAnchor by rememberSaveable {
mutableStateOf(if (isExpanded) expandedAnchor else dismissedAnchor) mutableStateOf(initialAnchor)
} }
return remember(dismissedBound, expandedBound, collapsedBound, coroutineScope) { return remember(dismissedBound, expandedBound, collapsedBound, coroutineScope) {