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
|
@Delete
|
||||||
fun delete(playlist: Playlist)
|
fun delete(playlist: Playlist)
|
||||||
|
|
||||||
@Delete
|
|
||||||
fun delete(song: Song)
|
|
||||||
|
|
||||||
@Delete
|
@Delete
|
||||||
fun delete(songPlaylistMap: SongPlaylistMap)
|
fun delete(songPlaylistMap: SongPlaylistMap)
|
||||||
|
|
||||||
|
|
|
@ -58,22 +58,22 @@ fun InHistoryMediaItemMenu(
|
||||||
val menuState = LocalMenuState.current
|
val menuState = LocalMenuState.current
|
||||||
val binder = LocalPlayerServiceBinder.current
|
val binder = LocalPlayerServiceBinder.current
|
||||||
|
|
||||||
var isDeletingFromDatabase by remember {
|
var isHiding by remember {
|
||||||
mutableStateOf(false)
|
mutableStateOf(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isDeletingFromDatabase) {
|
if (isHiding) {
|
||||||
ConfirmationDialog(
|
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 = {
|
onDismiss = {
|
||||||
isDeletingFromDatabase = false
|
isHiding = false
|
||||||
},
|
},
|
||||||
onConfirm = {
|
onConfirm = {
|
||||||
(onDismiss ?: menuState::hide).invoke()
|
(onDismiss ?: menuState::hide).invoke()
|
||||||
query {
|
query {
|
||||||
// Not sure we can to this here
|
// Not sure we can to this here
|
||||||
binder?.cache?.removeResource(song.song.id)
|
binder?.cache?.removeResource(song.song.id)
|
||||||
Database.delete(song.song)
|
Database.update(song.song.copy(totalPlayTimeMs = 0))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -82,8 +82,8 @@ fun InHistoryMediaItemMenu(
|
||||||
NonQueuedMediaItemMenu(
|
NonQueuedMediaItemMenu(
|
||||||
mediaItem = song.asMediaItem,
|
mediaItem = song.asMediaItem,
|
||||||
onDismiss = onDismiss,
|
onDismiss = onDismiss,
|
||||||
onDeleteFromDatabase = {
|
onHideFromDatabase = {
|
||||||
isDeletingFromDatabase = true
|
isHiding = true
|
||||||
},
|
},
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
)
|
)
|
||||||
|
@ -127,7 +127,7 @@ fun NonQueuedMediaItemMenu(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
onDismiss: (() -> Unit)? = null,
|
onDismiss: (() -> Unit)? = null,
|
||||||
onRemoveFromPlaylist: (() -> Unit)? = null,
|
onRemoveFromPlaylist: (() -> Unit)? = null,
|
||||||
onDeleteFromDatabase: (() -> Unit)? = null,
|
onHideFromDatabase: (() -> Unit)? = null,
|
||||||
onRemoveFromFavorites: (() -> Unit)? = null,
|
onRemoveFromFavorites: (() -> Unit)? = null,
|
||||||
) {
|
) {
|
||||||
val menuState = LocalMenuState.current
|
val menuState = LocalMenuState.current
|
||||||
|
@ -157,7 +157,7 @@ fun NonQueuedMediaItemMenu(
|
||||||
binder?.player?.enqueue(mediaItem)
|
binder?.player?.enqueue(mediaItem)
|
||||||
},
|
},
|
||||||
onRemoveFromPlaylist = onRemoveFromPlaylist,
|
onRemoveFromPlaylist = onRemoveFromPlaylist,
|
||||||
onDeleteFromDatabase = onDeleteFromDatabase,
|
onHideFromDatabase = onHideFromDatabase,
|
||||||
onRemoveFromFavorites = onRemoveFromFavorites,
|
onRemoveFromFavorites = onRemoveFromFavorites,
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
)
|
)
|
||||||
|
@ -198,7 +198,7 @@ fun BaseMediaItemMenu(
|
||||||
onEnqueue: (() -> Unit)? = null,
|
onEnqueue: (() -> Unit)? = null,
|
||||||
onRemoveFromQueue: (() -> Unit)? = null,
|
onRemoveFromQueue: (() -> Unit)? = null,
|
||||||
onRemoveFromPlaylist: (() -> Unit)? = null,
|
onRemoveFromPlaylist: (() -> Unit)? = null,
|
||||||
onDeleteFromDatabase: (() -> Unit)? = null,
|
onHideFromDatabase: (() -> Unit)? = null,
|
||||||
onRemoveFromFavorites: (() -> Unit)? = null,
|
onRemoveFromFavorites: (() -> Unit)? = null,
|
||||||
onGlobalRouteEmitted: (() -> Unit)? = null,
|
onGlobalRouteEmitted: (() -> Unit)? = null,
|
||||||
) {
|
) {
|
||||||
|
@ -226,7 +226,7 @@ fun BaseMediaItemMenu(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onDeleteFromDatabase = onDeleteFromDatabase,
|
onHideFromDatabase = onHideFromDatabase,
|
||||||
onRemoveFromFavorites = onRemoveFromFavorites,
|
onRemoveFromFavorites = onRemoveFromFavorites,
|
||||||
onRemoveFromPlaylist = onRemoveFromPlaylist,
|
onRemoveFromPlaylist = onRemoveFromPlaylist,
|
||||||
onRemoveFromQueue = onRemoveFromQueue,
|
onRemoveFromQueue = onRemoveFromQueue,
|
||||||
|
@ -250,7 +250,7 @@ fun MediaItemMenu(
|
||||||
onPlaySingle: (() -> Unit)? = null,
|
onPlaySingle: (() -> Unit)? = null,
|
||||||
onPlayNext: (() -> Unit)? = null,
|
onPlayNext: (() -> Unit)? = null,
|
||||||
onEnqueue: (() -> Unit)? = null,
|
onEnqueue: (() -> Unit)? = null,
|
||||||
onDeleteFromDatabase: (() -> Unit)? = null,
|
onHideFromDatabase: (() -> Unit)? = null,
|
||||||
onRemoveFromQueue: (() -> Unit)? = null,
|
onRemoveFromQueue: (() -> Unit)? = null,
|
||||||
onRemoveFromFavorites: (() -> Unit)? = null,
|
onRemoveFromFavorites: (() -> Unit)? = null,
|
||||||
onRemoveFromPlaylist: (() -> Unit)? = null,
|
onRemoveFromPlaylist: (() -> Unit)? = null,
|
||||||
|
@ -481,10 +481,10 @@ fun MediaItemMenu(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
onDeleteFromDatabase?.let { onDeleteFromDatabase ->
|
onHideFromDatabase?.let { onDeleteFromDatabase ->
|
||||||
MenuEntry(
|
MenuEntry(
|
||||||
icon = R.drawable.trash,
|
icon = R.drawable.trash,
|
||||||
text = "Delete",
|
text = "Hide",
|
||||||
onClick = onDeleteFromDatabase
|
onClick = onDeleteFromDatabase
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@ import it.vfsfitvnm.vimusic.query
|
||||||
import it.vfsfitvnm.vimusic.ui.components.TopAppBar
|
import it.vfsfitvnm.vimusic.ui.components.TopAppBar
|
||||||
import it.vfsfitvnm.vimusic.ui.components.themed.DropdownMenu
|
import it.vfsfitvnm.vimusic.ui.components.themed.DropdownMenu
|
||||||
import it.vfsfitvnm.vimusic.ui.components.themed.InHistoryMediaItemMenu
|
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.components.themed.TextFieldDialog
|
||||||
import it.vfsfitvnm.vimusic.ui.styling.LocalColorPalette
|
import it.vfsfitvnm.vimusic.ui.styling.LocalColorPalette
|
||||||
import it.vfsfitvnm.vimusic.ui.styling.LocalTypography
|
import it.vfsfitvnm.vimusic.ui.styling.LocalTypography
|
||||||
|
@ -540,10 +539,7 @@ fun HomeScreen() {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
menuContent = {
|
menuContent = {
|
||||||
when (preferences.songSortBy) {
|
InHistoryMediaItemMenu(song = song)
|
||||||
SongSortBy.PlayTime -> NonQueuedMediaItemMenu(mediaItem = song.asMediaItem)
|
|
||||||
SongSortBy.DateAdded -> InHistoryMediaItemMenu(song = song)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
onThumbnailContent = {
|
onThumbnailContent = {
|
||||||
AnimatedVisibility(
|
AnimatedVisibility(
|
||||||
|
|
Loading…
Add table
Reference in a new issue