hide the mini player only while the keyboard is up

This commit is contained in:
austinried
2026-10-04 00:29:56 +00:00
parent 82b64c7bc7
commit 187a4b3dff
2 changed files with 3 additions and 12 deletions
@@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.ime
import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.navigationBars
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -137,8 +138,6 @@ private fun MainNavigation() {
LaunchedEffect(Unit) { if (nowPlayingOpen) nowPlayingProgress = 1f } LaunchedEffect(Unit) { if (nowPlayingOpen) nowPlayingProgress = 1f }
val playerVisible = playback.item != null val playerVisible = playback.item != null
var librarySearching by rememberSaveable { mutableStateOf(false) }
val showMiniPlayer = playerVisible && !librarySearching
LaunchedEffect(playerVisible) { LaunchedEffect(playerVisible) {
if (!playerVisible) { if (!playerVisible) {
settleJob?.cancel() settleJob?.cancel()
@@ -148,6 +147,8 @@ private fun MainNavigation() {
} }
val density = LocalDensity.current val density = LocalDensity.current
val navBarInset = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } val navBarInset = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() }
val imeVisible = WindowInsets.ime.getBottom(density) > 0
val showMiniPlayer = playerVisible && !imeVisible
Box(Modifier.fillMaxSize()) { Box(Modifier.fillMaxSize()) {
Column(Modifier.fillMaxSize().imePadding()) { Column(Modifier.fillMaxSize().imePadding()) {
@@ -187,7 +188,6 @@ private fun MainNavigation() {
onArtistClick = { artist -> navController.navigate(Routes.artist(artist.id, artist.coverArt)) }, onArtistClick = { artist -> navController.navigate(Routes.artist(artist.id, artist.coverArt)) },
onPlaylistClick = { playlist -> navController.navigate(Routes.playlist(playlist.id)) }, onPlaylistClick = { playlist -> navController.navigate(Routes.playlist(playlist.id)) },
onOpenSettings = { navController.navigate(Routes.SETTINGS) }, onOpenSettings = { navController.navigate(Routes.SETTINGS) },
onSearchActiveChange = { librarySearching = it },
bottomInset = if (showMiniPlayer) 0.dp else navBarInset, bottomInset = if (showMiniPlayer) 0.dp else navBarInset,
) )
} }
@@ -57,7 +57,6 @@ import androidx.compose.material3.TextField
import androidx.compose.material3.TextFieldDefaults import androidx.compose.material3.TextFieldDefaults
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -166,7 +165,6 @@ fun LibraryRoute(
onArtistClick: (Artist) -> Unit, onArtistClick: (Artist) -> Unit,
onPlaylistClick: (Playlist) -> Unit, onPlaylistClick: (Playlist) -> Unit,
onOpenSettings: () -> Unit, onOpenSettings: () -> Unit,
onSearchActiveChange: (Boolean) -> Unit,
bottomInset: Dp, bottomInset: Dp,
viewModel: LibraryViewModel = koinViewModel(), viewModel: LibraryViewModel = koinViewModel(),
) { ) {
@@ -198,7 +196,6 @@ fun LibraryRoute(
onSongClick = viewModel::playSong, onSongClick = viewModel::playSong,
onSync = viewModel::sync, onSync = viewModel::sync,
onOpenSettings = onOpenSettings, onOpenSettings = onOpenSettings,
onSearchActiveChange = onSearchActiveChange,
playingSongId = playingSongId, playingSongId = playingSongId,
listQuery = listQuery, listQuery = listQuery,
resetKeys = resetKeys, resetKeys = resetKeys,
@@ -253,7 +250,6 @@ fun LibraryScreen(
onClearFilters: () -> Unit = {}, onClearFilters: () -> Unit = {},
search: String = "", search: String = "",
onSearchChange: (String) -> Unit = {}, onSearchChange: (String) -> Unit = {},
onSearchActiveChange: (Boolean) -> Unit = {},
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val pagerState = val pagerState =
@@ -265,11 +261,6 @@ fun LibraryScreen(
var searchActive by rememberSaveable { mutableStateOf(false) } var searchActive by rememberSaveable { mutableStateOf(false) }
val searchFocus = remember { FocusRequester() } val searchFocus = remember { FocusRequester() }
DisposableEffect(searchActive) {
onSearchActiveChange(searchActive)
onDispose { onSearchActiveChange(false) }
}
LaunchedEffect(pagerState) { LaunchedEffect(pagerState) {
snapshotFlow { pagerState.currentPage }.collect { page -> snapshotFlow { pagerState.currentPage }.collect { page ->
onTabSelected(LibraryTab.entries[page]) onTabSelected(LibraryTab.entries[page])