From 187a4b3dff7753d68d84c3d6711e9acfd4bec94b Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Thu, 24 Sep 2026 23:30:25 +0000 Subject: [PATCH] hide the mini player only while the keyboard is up --- app/src/main/kotlin/com/subtracks/ui/AppRoot.kt | 6 +++--- .../kotlin/com/subtracks/ui/library/LibraryScreen.kt | 9 --------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/app/src/main/kotlin/com/subtracks/ui/AppRoot.kt b/app/src/main/kotlin/com/subtracks/ui/AppRoot.kt index a9d0796c..6116b749 100644 --- a/app/src/main/kotlin/com/subtracks/ui/AppRoot.kt +++ b/app/src/main/kotlin/com/subtracks/ui/AppRoot.kt @@ -19,6 +19,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.consumeWindowInsets import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.ime import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.navigationBars import androidx.compose.runtime.Composable @@ -137,8 +138,6 @@ private fun MainNavigation() { LaunchedEffect(Unit) { if (nowPlayingOpen) nowPlayingProgress = 1f } val playerVisible = playback.item != null - var librarySearching by rememberSaveable { mutableStateOf(false) } - val showMiniPlayer = playerVisible && !librarySearching LaunchedEffect(playerVisible) { if (!playerVisible) { settleJob?.cancel() @@ -148,6 +147,8 @@ private fun MainNavigation() { } val density = LocalDensity.current val navBarInset = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } + val imeVisible = WindowInsets.ime.getBottom(density) > 0 + val showMiniPlayer = playerVisible && !imeVisible Box(Modifier.fillMaxSize()) { Column(Modifier.fillMaxSize().imePadding()) { @@ -187,7 +188,6 @@ private fun MainNavigation() { onArtistClick = { artist -> navController.navigate(Routes.artist(artist.id, artist.coverArt)) }, onPlaylistClick = { playlist -> navController.navigate(Routes.playlist(playlist.id)) }, onOpenSettings = { navController.navigate(Routes.SETTINGS) }, - onSearchActiveChange = { librarySearching = it }, bottomInset = if (showMiniPlayer) 0.dp else navBarInset, ) } diff --git a/app/src/main/kotlin/com/subtracks/ui/library/LibraryScreen.kt b/app/src/main/kotlin/com/subtracks/ui/library/LibraryScreen.kt index 53991929..552ec3e1 100644 --- a/app/src/main/kotlin/com/subtracks/ui/library/LibraryScreen.kt +++ b/app/src/main/kotlin/com/subtracks/ui/library/LibraryScreen.kt @@ -57,7 +57,6 @@ import androidx.compose.material3.TextField import androidx.compose.material3.TextFieldDefaults import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue @@ -166,7 +165,6 @@ fun LibraryRoute( onArtistClick: (Artist) -> Unit, onPlaylistClick: (Playlist) -> Unit, onOpenSettings: () -> Unit, - onSearchActiveChange: (Boolean) -> Unit, bottomInset: Dp, viewModel: LibraryViewModel = koinViewModel(), ) { @@ -198,7 +196,6 @@ fun LibraryRoute( onSongClick = viewModel::playSong, onSync = viewModel::sync, onOpenSettings = onOpenSettings, - onSearchActiveChange = onSearchActiveChange, playingSongId = playingSongId, listQuery = listQuery, resetKeys = resetKeys, @@ -253,7 +250,6 @@ fun LibraryScreen( onClearFilters: () -> Unit = {}, search: String = "", onSearchChange: (String) -> Unit = {}, - onSearchActiveChange: (Boolean) -> Unit = {}, modifier: Modifier = Modifier, ) { val pagerState = @@ -265,11 +261,6 @@ fun LibraryScreen( var searchActive by rememberSaveable { mutableStateOf(false) } val searchFocus = remember { FocusRequester() } - DisposableEffect(searchActive) { - onSearchActiveChange(searchActive) - onDispose { onSearchActiveChange(false) } - } - LaunchedEffect(pagerState) { snapshotFlow { pagerState.currentPage }.collect { page -> onTabSelected(LibraryTab.entries[page])