diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt index 8c53a32..2639574 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt @@ -54,6 +54,8 @@ val StopRadioCommand = SessionCommand("StopRadioCommand", Bundle.EMPTY) val GetCacheSizeCommand = SessionCommand("GetCacheSizeCommand", Bundle.EMPTY) +val DeleteSongCacheCommand = SessionCommand("DeleteSongCacheCommand", Bundle.EMPTY) + @ExperimentalAnimationApi @ExperimentalFoundationApi class PlayerService : MediaSessionService(), MediaSession.MediaItemFiller, @@ -180,6 +182,7 @@ class PlayerService : MediaSessionService(), MediaSession.MediaItemFiller, .add(StartArtistRadioCommand) .add(StopRadioCommand) .add(GetCacheSizeCommand) + .add(DeleteSongCacheCommand) .build() val playerCommands = Player.Commands.Builder().addAllCommands().build() return MediaSession.ConnectionResult.accept(sessionCommands, playerCommands) @@ -213,6 +216,11 @@ class PlayerService : MediaSessionService(), MediaSession.MediaItemFiller, GetCacheSizeCommand -> { return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS, bundleOf("cacheSize" to cache.cacheSpace))) } + DeleteSongCacheCommand -> { + args.getString("videoId")?.let { videoId -> + cache.removeResource(videoId) + } + } } return super.onCustomCommand(session, controller, customCommand, args) 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 bf15cd7..9250ae1 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 @@ -25,6 +25,7 @@ import it.vfsfitvnm.vimusic.internal import it.vfsfitvnm.vimusic.models.Playlist import it.vfsfitvnm.vimusic.models.SongInPlaylist import it.vfsfitvnm.vimusic.models.SongWithInfo +import it.vfsfitvnm.vimusic.services.DeleteSongCacheCommand import it.vfsfitvnm.vimusic.services.StartRadioCommand import it.vfsfitvnm.vimusic.services.StopRadioCommand import it.vfsfitvnm.vimusic.ui.components.LocalMenuState @@ -65,6 +66,8 @@ fun InHistoryMediaItemMenu( // https://issuetracker.google.com/issues/226410236 onDismiss: () -> Unit = LocalMenuState.current.let { it::hide } ) { + val mediaController = LocalYoutubePlayer.current?.mediaController + val coroutineScope = rememberCoroutineScope() var isDeletingFromDatabase by remember { @@ -79,6 +82,7 @@ fun InHistoryMediaItemMenu( }, onConfirm = { onDismiss() + mediaController?.sendCustomCommand(DeleteSongCacheCommand, bundleOf("videoId" to song.song.id)) coroutineScope.launch(Dispatchers.IO) { Database.delete(song.song) }