Delete cache when a song is deleted from the database
This commit is contained in:
@@ -54,6 +54,8 @@ val StopRadioCommand = SessionCommand("StopRadioCommand", Bundle.EMPTY)
|
|||||||
|
|
||||||
val GetCacheSizeCommand = SessionCommand("GetCacheSizeCommand", Bundle.EMPTY)
|
val GetCacheSizeCommand = SessionCommand("GetCacheSizeCommand", Bundle.EMPTY)
|
||||||
|
|
||||||
|
val DeleteSongCacheCommand = SessionCommand("DeleteSongCacheCommand", Bundle.EMPTY)
|
||||||
|
|
||||||
@ExperimentalAnimationApi
|
@ExperimentalAnimationApi
|
||||||
@ExperimentalFoundationApi
|
@ExperimentalFoundationApi
|
||||||
class PlayerService : MediaSessionService(), MediaSession.MediaItemFiller,
|
class PlayerService : MediaSessionService(), MediaSession.MediaItemFiller,
|
||||||
@@ -180,6 +182,7 @@ class PlayerService : MediaSessionService(), MediaSession.MediaItemFiller,
|
|||||||
.add(StartArtistRadioCommand)
|
.add(StartArtistRadioCommand)
|
||||||
.add(StopRadioCommand)
|
.add(StopRadioCommand)
|
||||||
.add(GetCacheSizeCommand)
|
.add(GetCacheSizeCommand)
|
||||||
|
.add(DeleteSongCacheCommand)
|
||||||
.build()
|
.build()
|
||||||
val playerCommands = Player.Commands.Builder().addAllCommands().build()
|
val playerCommands = Player.Commands.Builder().addAllCommands().build()
|
||||||
return MediaSession.ConnectionResult.accept(sessionCommands, playerCommands)
|
return MediaSession.ConnectionResult.accept(sessionCommands, playerCommands)
|
||||||
@@ -213,6 +216,11 @@ class PlayerService : MediaSessionService(), MediaSession.MediaItemFiller,
|
|||||||
GetCacheSizeCommand -> {
|
GetCacheSizeCommand -> {
|
||||||
return Futures.immediateFuture(SessionResult(SessionResult.RESULT_SUCCESS, bundleOf("cacheSize" to cache.cacheSpace)))
|
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)
|
return super.onCustomCommand(session, controller, customCommand, args)
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import it.vfsfitvnm.vimusic.internal
|
|||||||
import it.vfsfitvnm.vimusic.models.Playlist
|
import it.vfsfitvnm.vimusic.models.Playlist
|
||||||
import it.vfsfitvnm.vimusic.models.SongInPlaylist
|
import it.vfsfitvnm.vimusic.models.SongInPlaylist
|
||||||
import it.vfsfitvnm.vimusic.models.SongWithInfo
|
import it.vfsfitvnm.vimusic.models.SongWithInfo
|
||||||
|
import it.vfsfitvnm.vimusic.services.DeleteSongCacheCommand
|
||||||
import it.vfsfitvnm.vimusic.services.StartRadioCommand
|
import it.vfsfitvnm.vimusic.services.StartRadioCommand
|
||||||
import it.vfsfitvnm.vimusic.services.StopRadioCommand
|
import it.vfsfitvnm.vimusic.services.StopRadioCommand
|
||||||
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
|
||||||
@@ -65,6 +66,8 @@ fun InHistoryMediaItemMenu(
|
|||||||
// https://issuetracker.google.com/issues/226410236
|
// https://issuetracker.google.com/issues/226410236
|
||||||
onDismiss: () -> Unit = LocalMenuState.current.let { it::hide }
|
onDismiss: () -> Unit = LocalMenuState.current.let { it::hide }
|
||||||
) {
|
) {
|
||||||
|
val mediaController = LocalYoutubePlayer.current?.mediaController
|
||||||
|
|
||||||
val coroutineScope = rememberCoroutineScope()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
|
|
||||||
var isDeletingFromDatabase by remember {
|
var isDeletingFromDatabase by remember {
|
||||||
@@ -79,6 +82,7 @@ fun InHistoryMediaItemMenu(
|
|||||||
},
|
},
|
||||||
onConfirm = {
|
onConfirm = {
|
||||||
onDismiss()
|
onDismiss()
|
||||||
|
mediaController?.sendCustomCommand(DeleteSongCacheCommand, bundleOf("videoId" to song.song.id))
|
||||||
coroutineScope.launch(Dispatchers.IO) {
|
coroutineScope.launch(Dispatchers.IO) {
|
||||||
Database.delete(song.song)
|
Database.delete(song.song)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user