diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt index ae81011..76e7936 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/components/themed/MediaItemMenu.kt @@ -45,7 +45,6 @@ import it.vfsfitvnm.vimusic.models.Playlist import it.vfsfitvnm.vimusic.models.SongPlaylistMap import it.vfsfitvnm.vimusic.query import it.vfsfitvnm.vimusic.transaction -import it.vfsfitvnm.vimusic.ui.components.LocalMenuState import it.vfsfitvnm.vimusic.ui.screens.albumRoute import it.vfsfitvnm.vimusic.ui.screens.artistRoute import it.vfsfitvnm.vimusic.ui.screens.viewPlaylistsRoute @@ -62,9 +61,9 @@ import kotlinx.coroutines.flow.flowOf @ExperimentalAnimationApi @Composable fun InFavoritesMediaItemMenu( + onDismiss: () -> Unit, song: DetailedSong, modifier: Modifier = Modifier, - onDismiss: (() -> Unit)? = null ) { NonQueuedMediaItemMenu( mediaItem = song.asMediaItem, @@ -81,11 +80,10 @@ fun InFavoritesMediaItemMenu( @ExperimentalAnimationApi @Composable fun InHistoryMediaItemMenu( + onDismiss: () -> Unit, song: DetailedSong, - modifier: Modifier = Modifier, - onDismiss: (() -> Unit)? = null + modifier: Modifier = Modifier ) { - val menuState = LocalMenuState.current val binder = LocalPlayerServiceBinder.current var isHiding by remember { @@ -97,7 +95,7 @@ fun InHistoryMediaItemMenu( text = "Do you really hide this song? Its playback time and cache will be wiped.\nThis action is irreversible.", onDismiss = { isHiding = false }, onConfirm = { - (onDismiss ?: menuState::hide).invoke() + onDismiss() query { // Not sure we can to this here binder?.cache?.removeResource(song.id) @@ -118,11 +116,11 @@ fun InHistoryMediaItemMenu( @ExperimentalAnimationApi @Composable fun InPlaylistMediaItemMenu( + onDismiss: () -> Unit, playlistId: Long, positionInPlaylist: Int, song: DetailedSong, - modifier: Modifier = Modifier, - onDismiss: (() -> Unit)? = null + modifier: Modifier = Modifier ) { NonQueuedMediaItemMenu( mediaItem = song.asMediaItem, @@ -140,19 +138,18 @@ fun InPlaylistMediaItemMenu( @ExperimentalAnimationApi @Composable fun NonQueuedMediaItemMenu( + onDismiss: () -> Unit, mediaItem: MediaItem, modifier: Modifier = Modifier, - onDismiss: (() -> Unit)? = null, onRemoveFromPlaylist: (() -> Unit)? = null, onHideFromDatabase: (() -> Unit)? = null, onRemoveFromFavorites: (() -> Unit)? = null, ) { - val menuState = LocalMenuState.current val binder = LocalPlayerServiceBinder.current BaseMediaItemMenu( mediaItem = mediaItem, - onDismiss = onDismiss ?: menuState::hide, + onDismiss = onDismiss, onStartRadio = { binder?.stopRadio() binder?.player?.forcePlay(mediaItem) @@ -175,17 +172,16 @@ fun NonQueuedMediaItemMenu( @ExperimentalAnimationApi @Composable fun QueuedMediaItemMenu( + onDismiss: () -> Unit, mediaItem: MediaItem, indexInQueue: Int?, - modifier: Modifier = Modifier, - onDismiss: (() -> Unit)? = null + modifier: Modifier = Modifier ) { - val menuState = LocalMenuState.current val binder = LocalPlayerServiceBinder.current BaseMediaItemMenu( mediaItem = mediaItem, - onDismiss = onDismiss ?: menuState::hide, + onDismiss = onDismiss, onRemoveFromQueue = if (indexInQueue != null) ({ binder?.player?.removeMediaItem(indexInQueue) }) else null, @@ -196,11 +192,11 @@ fun QueuedMediaItemMenu( @ExperimentalAnimationApi @Composable fun BaseMediaItemMenu( - mediaItem: MediaItem, onDismiss: () -> Unit, + mediaItem: MediaItem, modifier: Modifier = Modifier, onGoToEqualizer: (() -> Unit)? = null, - onSetSleepTimer: (() -> Unit)? = null, + onShowSleepTimer: (() -> Unit)? = null, onStartRadio: (() -> Unit)? = null, onPlayNext: (() -> Unit)? = null, onEnqueue: (() -> Unit)? = null, @@ -215,7 +211,7 @@ fun BaseMediaItemMenu( mediaItem = mediaItem, onDismiss = onDismiss, onGoToEqualizer = onGoToEqualizer, - onSetSleepTimer = onSetSleepTimer, + onShowSleepTimer = onShowSleepTimer, onStartRadio = onStartRadio, onPlayNext = onPlayNext, onEnqueue = onEnqueue, @@ -256,11 +252,11 @@ fun BaseMediaItemMenu( @ExperimentalAnimationApi @Composable fun MediaItemMenu( - mediaItem: MediaItem, onDismiss: () -> Unit, + mediaItem: MediaItem, modifier: Modifier = Modifier, onGoToEqualizer: (() -> Unit)? = null, - onSetSleepTimer: (() -> Unit)? = null, + onShowSleepTimer: (() -> Unit)? = null, onStartRadio: (() -> Unit)? = null, onPlayNext: (() -> Unit)? = null, onEnqueue: (() -> Unit)? = null, @@ -413,7 +409,8 @@ fun MediaItemMenu( ) } - onSetSleepTimer?.let { + // TODO: find solution to this shit + onShowSleepTimer?.let { val binder = LocalPlayerServiceBinder.current val (colorPalette, typography) = LocalAppearance.current @@ -432,17 +429,15 @@ fun MediaItemMenu( confirmText = "Stop", onDismiss = { isShowingSleepTimerDialog = false + onDismiss() }, onConfirm = { binder?.cancelSleepTimer() + onDismiss() } ) } else { - DefaultDialog( - onDismiss = { - isShowingSleepTimerDialog = false - } - ) { + DefaultDialog(onDismiss = { isShowingSleepTimerDialog = false }) { var amount by remember { mutableStateOf(1) } @@ -514,7 +509,10 @@ fun MediaItemMenu( ) { DialogTextButton( text = "Cancel", - onClick = { isShowingSleepTimerDialog = false } + onClick = { + isShowingSleepTimerDialog = false + onDismiss() + } ) DialogTextButton( @@ -523,6 +521,7 @@ fun MediaItemMenu( onClick = { binder?.startSleepTimer(amount * 10 * 60 * 1000L) isShowingSleepTimerDialog = false + onDismiss() } ) } diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/album/AlbumSongs.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/album/AlbumSongs.kt index e4cec80..e877e37 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/album/AlbumSongs.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/album/AlbumSongs.kt @@ -117,7 +117,10 @@ fun AlbumSongs( .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistLocalSongs.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistLocalSongs.kt index 2b724a2..186c9fc 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistLocalSongs.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistLocalSongs.kt @@ -102,12 +102,18 @@ fun ArtistLocalSongs( .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { binder?.stopRadio() - binder?.player?.forcePlayAtIndex(songs.map(DetailedSong::asMediaItem), index) + binder?.player?.forcePlayAtIndex( + songs.map(DetailedSong::asMediaItem), + index + ) } ) ) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistOverview.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistOverview.kt index 9e4ff14..363e09e 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistOverview.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistOverview.kt @@ -125,7 +125,10 @@ fun ArtistOverview( .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistScreen.kt index e1535ed..29c6f29 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/artist/ArtistScreen.kt @@ -284,7 +284,10 @@ fun ArtistScreen(browseId: String) { .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/builtinplaylist/BuiltInPlaylistSongs.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/builtinplaylist/BuiltInPlaylistSongs.kt index dcc7f42..51441fe 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/builtinplaylist/BuiltInPlaylistSongs.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/builtinplaylist/BuiltInPlaylistSongs.kt @@ -116,8 +116,14 @@ fun BuiltInPlaylistSongs(builtInPlaylist: BuiltInPlaylist) { onLongClick = { menuState.display { when (builtInPlaylist) { - BuiltInPlaylist.Favorites -> InFavoritesMediaItemMenu(song = song) - BuiltInPlaylist.Offline -> InHistoryMediaItemMenu(song = song) + BuiltInPlaylist.Favorites -> InFavoritesMediaItemMenu( + song = song, + onDismiss = menuState::hide + ) + BuiltInPlaylist.Offline -> InHistoryMediaItemMenu( + song = song, + onDismiss = menuState::hide + ) } } }, diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/HomeSongs.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/HomeSongs.kt index 9d500f8..bac8c4c 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/HomeSongs.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/HomeSongs.kt @@ -168,12 +168,18 @@ fun HomeSongs() { .combinedClickable( onLongClick = { menuState.display { - InHistoryMediaItemMenu(song = song) + InHistoryMediaItemMenu( + song = song, + onDismiss = menuState::hide + ) } }, onClick = { binder?.stopRadio() - binder?.player?.forcePlayAtIndex(items.map(DetailedSong::asMediaItem), index) + binder?.player?.forcePlayAtIndex( + items.map(DetailedSong::asMediaItem), + index + ) } ) .animateItemPlacement() diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/QuickPicks.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/QuickPicks.kt index cbae4d4..bf65a0f 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/QuickPicks.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/home/QuickPicks.kt @@ -138,7 +138,10 @@ fun QuickPicks( .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { @@ -168,7 +171,10 @@ fun QuickPicks( .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/localplaylist/LocalPlaylistSongs.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/localplaylist/LocalPlaylistSongs.kt index 473da26..6a32596 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/localplaylist/LocalPlaylistSongs.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/localplaylist/LocalPlaylistSongs.kt @@ -172,13 +172,13 @@ fun LocalPlaylistSongs( transaction { runBlocking(Dispatchers.IO) { withContext(Dispatchers.IO) { - Innertube.playlistPage(BrowseBody(browseId = browseId))?.completed() + Innertube.playlistPage(BrowseBody(browseId = browseId)) + ?.completed() } }?.getOrNull()?.let { remotePlaylist -> Database.clearPlaylist(playlistId) - remotePlaylist. - songsPage + remotePlaylist.songsPage ?.items ?.map(Innertube.SongItem::asMediaItem) ?.onEach(Database::insert) @@ -240,12 +240,14 @@ fun LocalPlaylistSongs( InPlaylistMediaItemMenu( playlistId = playlistId, positionInPlaylist = index, - song = song + song = song, + onDismiss = menuState::hide ) } }, onClick = { - playlistWithSongs?.songs?.map(DetailedSong::asMediaItem) + playlistWithSongs?.songs + ?.map(DetailedSong::asMediaItem) ?.let { mediaItems -> binder?.stopRadio() binder?.player?.forcePlayAtIndex(mediaItems, index) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerBottomSheet.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerBottomSheet.kt index 0309f7d..d27ae77 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerBottomSheet.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerBottomSheet.kt @@ -210,7 +210,8 @@ fun PlayerBottomSheet( menuState.display { QueuedMediaItemMenu( mediaItem = window.mediaItem, - indexInQueue = if (isPlayingThisMediaItem) null else window.firstPeriodIndex + indexInQueue = if (isPlayingThisMediaItem) null else window.firstPeriodIndex, + onDismiss = menuState::hide ) } }, @@ -268,7 +269,10 @@ fun PlayerBottomSheet( text = "${windows.size} songs", style = typography.xxs.medium, modifier = Modifier - .background(color = colorPalette.background1, shape = RoundedCornerShape(16.dp)) + .background( + color = colorPalette.background1, + shape = RoundedCornerShape(16.dp) + ) .align(Alignment.CenterStart) .padding(all = 8.dp) ) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerView.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerView.kt index 68a34ae..fdd78f6 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerView.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/player/PlayerView.kt @@ -44,11 +44,13 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp +import androidx.media3.common.MediaItem import androidx.media3.common.Player import coil.compose.AsyncImage import it.vfsfitvnm.route.OnGlobalRoute import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder import it.vfsfitvnm.vimusic.R +import it.vfsfitvnm.vimusic.service.PlayerService import it.vfsfitvnm.vimusic.ui.components.BottomSheet import it.vfsfitvnm.vimusic.ui.components.BottomSheetState import it.vfsfitvnm.vimusic.ui.components.LocalMenuState @@ -219,7 +221,10 @@ fun PlayerView( } val paddingValues = WindowInsets.navigationBars.asPaddingValues() - val playerBottomSheetState = rememberBottomSheetState(64.dp + paddingValues.calculateBottomPadding(), layoutState.expandedBound) + val playerBottomSheetState = rememberBottomSheetState( + 64.dp + paddingValues.calculateBottomPadding(), + layoutState.expandedBound + ) when (configuration.orientation) { Configuration.ORIENTATION_LANDSCAPE -> { @@ -265,6 +270,7 @@ fun PlayerView( ) } } + else -> { Column( horizontalAlignment = Alignment.CenterHorizontally, @@ -325,50 +331,10 @@ fun PlayerView( color = colorPalette.text, onClick = { menuState.display { - val resultRegistryOwner = - LocalActivityResultRegistryOwner.current - - BaseMediaItemMenu( + PlayerMenu( + onDismiss = menuState::hide, mediaItem = mediaItem, - onStartRadio = { - binder.stopRadio() - binder.player.seamlessPlay(mediaItem) - binder.setupRadio( - NavigationEndpoint.Endpoint.Watch(videoId = mediaItem.mediaId) - ) - }, - onGoToEqualizer = { - val intent = - Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL).apply { - putExtra( - AudioEffect.EXTRA_AUDIO_SESSION, - binder.player.audioSessionId - ) - putExtra( - AudioEffect.EXTRA_PACKAGE_NAME, - context.packageName - ) - putExtra( - AudioEffect.EXTRA_CONTENT_TYPE, - AudioEffect.CONTENT_TYPE_MUSIC - ) - } - - if (intent.resolveActivity(context.packageManager) != null) { - val contract = - ActivityResultContracts.StartActivityForResult() - - resultRegistryOwner?.activityResultRegistry - ?.register("", contract) {} - ?.launch(intent) - } else { - Toast - .makeText(context, "No equalizer app found!", Toast.LENGTH_SHORT) - .show() - } - }, - onSetSleepTimer = {}, - onDismiss = menuState::hide + binder = binder ) } }, @@ -389,3 +355,41 @@ fun PlayerView( ) } } + +@ExperimentalAnimationApi +@Composable +private fun PlayerMenu( + binder: PlayerService.Binder, + mediaItem: MediaItem, + onDismiss: () -> Unit +) { + val context = LocalContext.current + val resultRegistryOwner = LocalActivityResultRegistryOwner.current + + BaseMediaItemMenu( + mediaItem = mediaItem, + onStartRadio = { + binder.stopRadio() + binder.player.seamlessPlay(mediaItem) + binder.setupRadio(NavigationEndpoint.Endpoint.Watch(videoId = mediaItem.mediaId)) + }, + onGoToEqualizer = { + val intent = Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL).apply { + putExtra(AudioEffect.EXTRA_AUDIO_SESSION, binder.player.audioSessionId) + putExtra(AudioEffect.EXTRA_PACKAGE_NAME, context.packageName) + putExtra(AudioEffect.EXTRA_CONTENT_TYPE, AudioEffect.CONTENT_TYPE_MUSIC) + } + + if (intent.resolveActivity(context.packageManager) != null) { + val contract = ActivityResultContracts.StartActivityForResult() + + resultRegistryOwner?.activityResultRegistry + ?.register("", contract) {}?.launch(intent) + } else { + Toast.makeText(context, "No equalizer app found!", Toast.LENGTH_SHORT).show() + } + }, + onShowSleepTimer = {}, + onDismiss = onDismiss + ) +} diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/playlist/PlaylistSongList.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/playlist/PlaylistSongList.kt index e861d97..998e927 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/playlist/PlaylistSongList.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/playlist/PlaylistSongList.kt @@ -199,7 +199,10 @@ fun PlaylistSongList( .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/search/LocalSongSearch.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/search/LocalSongSearch.kt index 0809ee1..f95a105 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/search/LocalSongSearch.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/search/LocalSongSearch.kt @@ -90,7 +90,7 @@ fun LocalSongSearch( actionsContent = { if (textFieldValue.text.isNotEmpty()) { SecondaryTextButton( - text = "Clear", + text = "Clear", onClick = { onTextFieldValueChanged(TextFieldValue()) } ) } @@ -110,7 +110,10 @@ fun LocalSongSearch( .combinedClickable( onLongClick = { menuState.display { - InHistoryMediaItemMenu(song = song) + InHistoryMediaItemMenu( + song = song, + onDismiss = menuState::hide + ) } }, onClick = { diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/searchresult/SearchResultScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/searchresult/SearchResultScreen.kt index c6b82dd..c554ddd 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/searchresult/SearchResultScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/searchresult/SearchResultScreen.kt @@ -124,7 +124,10 @@ fun SearchResultScreen(query: String, onSearchAgain: () -> Unit) { .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = song.asMediaItem) + NonQueuedMediaItemMenu( + onDismiss = menuState::hide, + mediaItem = song.asMediaItem, + ) } }, onClick = { @@ -246,7 +249,10 @@ fun SearchResultScreen(query: String, onSearchAgain: () -> Unit) { .combinedClickable( onLongClick = { menuState.display { - NonQueuedMediaItemMenu(mediaItem = video.asMediaItem) + NonQueuedMediaItemMenu( + mediaItem = video.asMediaItem, + onDismiss = menuState::hide + ) } }, onClick = {