mirror of
https://github.com/austinried/subtracks.git
synced 2026-11-11 07:29:14 +01:00
hide the mini player only while the keyboard is up
This commit is contained in:
@@ -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])
|
||||||
|
|||||||
Reference in New Issue
Block a user