Hide songs instead of deleting from database

This commit is contained in:
vfsfitvnm 2022-07-06 20:28:34 +02:00
parent 2e542d3c1a
commit b3104207ff
3 changed files with 15 additions and 22 deletions

View file

@ -212,9 +212,6 @@ interface Database {
@Delete
fun delete(playlist: Playlist)
@Delete
fun delete(song: Song)
@Delete
fun delete(songPlaylistMap: SongPlaylistMap)

View file

@ -58,22 +58,22 @@ fun InHistoryMediaItemMenu(
val menuState = LocalMenuState.current
val binder = LocalPlayerServiceBinder.current
var isDeletingFromDatabase by remember {
var isHiding by remember {
mutableStateOf(false)
}
if (isDeletingFromDatabase) {
if (isHiding) {
ConfirmationDialog(
text = "Do you really want to permanently delete this song? It will removed from any playlist as well.\nThis action is irreversible.",
text = "Do you really hide this song? Its playback time and cache will be wiped.\nThis action is irreversible.",
onDismiss = {
isDeletingFromDatabase = false
isHiding = false
},
onConfirm = {
(onDismiss ?: menuState::hide).invoke()
query {
// Not sure we can to this here
binder?.cache?.removeResource(song.song.id)
Database.delete(song.song)
Database.update(song.song.copy(totalPlayTimeMs = 0))
}
}
)
@ -82,8 +82,8 @@ fun InHistoryMediaItemMenu(
NonQueuedMediaItemMenu(
mediaItem = song.asMediaItem,
onDismiss = onDismiss,
onDeleteFromDatabase = {
isDeletingFromDatabase = true
onHideFromDatabase = {
isHiding = true
},
modifier = modifier
)
@ -127,7 +127,7 @@ fun NonQueuedMediaItemMenu(
modifier: Modifier = Modifier,
onDismiss: (() -> Unit)? = null,
onRemoveFromPlaylist: (() -> Unit)? = null,
onDeleteFromDatabase: (() -> Unit)? = null,
onHideFromDatabase: (() -> Unit)? = null,
onRemoveFromFavorites: (() -> Unit)? = null,
) {
val menuState = LocalMenuState.current
@ -157,7 +157,7 @@ fun NonQueuedMediaItemMenu(
binder?.player?.enqueue(mediaItem)
},
onRemoveFromPlaylist = onRemoveFromPlaylist,
onDeleteFromDatabase = onDeleteFromDatabase,
onHideFromDatabase = onHideFromDatabase,
onRemoveFromFavorites = onRemoveFromFavorites,
modifier = modifier
)
@ -198,7 +198,7 @@ fun BaseMediaItemMenu(
onEnqueue: (() -> Unit)? = null,
onRemoveFromQueue: (() -> Unit)? = null,
onRemoveFromPlaylist: (() -> Unit)? = null,
onDeleteFromDatabase: (() -> Unit)? = null,
onHideFromDatabase: (() -> Unit)? = null,
onRemoveFromFavorites: (() -> Unit)? = null,
onGlobalRouteEmitted: (() -> Unit)? = null,
) {
@ -226,7 +226,7 @@ fun BaseMediaItemMenu(
)
}
},
onDeleteFromDatabase = onDeleteFromDatabase,
onHideFromDatabase = onHideFromDatabase,
onRemoveFromFavorites = onRemoveFromFavorites,
onRemoveFromPlaylist = onRemoveFromPlaylist,
onRemoveFromQueue = onRemoveFromQueue,
@ -250,7 +250,7 @@ fun MediaItemMenu(
onPlaySingle: (() -> Unit)? = null,
onPlayNext: (() -> Unit)? = null,
onEnqueue: (() -> Unit)? = null,
onDeleteFromDatabase: (() -> Unit)? = null,
onHideFromDatabase: (() -> Unit)? = null,
onRemoveFromQueue: (() -> Unit)? = null,
onRemoveFromFavorites: (() -> Unit)? = null,
onRemoveFromPlaylist: (() -> Unit)? = null,
@ -481,10 +481,10 @@ fun MediaItemMenu(
)
}
onDeleteFromDatabase?.let { onDeleteFromDatabase ->
onHideFromDatabase?.let { onDeleteFromDatabase ->
MenuEntry(
icon = R.drawable.trash,
text = "Delete",
text = "Hide",
onClick = onDeleteFromDatabase
)
}

View file

@ -47,7 +47,6 @@ import it.vfsfitvnm.vimusic.query
import it.vfsfitvnm.vimusic.ui.components.TopAppBar
import it.vfsfitvnm.vimusic.ui.components.themed.DropdownMenu
import it.vfsfitvnm.vimusic.ui.components.themed.InHistoryMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.NonQueuedMediaItemMenu
import it.vfsfitvnm.vimusic.ui.components.themed.TextFieldDialog
import it.vfsfitvnm.vimusic.ui.styling.LocalColorPalette
import it.vfsfitvnm.vimusic.ui.styling.LocalTypography
@ -540,10 +539,7 @@ fun HomeScreen() {
)
},
menuContent = {
when (preferences.songSortBy) {
SongSortBy.PlayTime -> NonQueuedMediaItemMenu(mediaItem = song.asMediaItem)
SongSortBy.DateAdded -> InHistoryMediaItemMenu(song = song)
}
InHistoryMediaItemMenu(song = song)
},
onThumbnailContent = {
AnimatedVisibility(