Hide songs instead of deleting from database
This commit is contained in:
parent
2e542d3c1a
commit
b3104207ff
3 changed files with 15 additions and 22 deletions
|
@ -212,9 +212,6 @@ interface Database {
|
|||
@Delete
|
||||
fun delete(playlist: Playlist)
|
||||
|
||||
@Delete
|
||||
fun delete(song: Song)
|
||||
|
||||
@Delete
|
||||
fun delete(songPlaylistMap: SongPlaylistMap)
|
||||
|
||||
|
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Add table
Reference in a new issue