Tweak Database class

This commit is contained in:
vfsfitvnm
2022-07-01 12:54:22 +02:00
parent 9b67586dd6
commit 7c165b5c3a
15 changed files with 192 additions and 220 deletions

View File

@@ -19,7 +19,7 @@ import it.vfsfitvnm.route.empty
import it.vfsfitvnm.vimusic.*
import it.vfsfitvnm.vimusic.R
import it.vfsfitvnm.vimusic.models.Playlist
import it.vfsfitvnm.vimusic.models.SongInPlaylist
import it.vfsfitvnm.vimusic.models.SongPlaylistMap
import it.vfsfitvnm.vimusic.models.DetailedSong
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.screens.rememberArtistRoute
@@ -104,7 +104,7 @@ fun InPlaylistMediaItemMenu(
onRemoveFromPlaylist = {
transaction {
Database.delete(
SongInPlaylist(
SongPlaylistMap(
songId = song.song.id,
playlistId = playlistId,
position = positionInPlaylist
@@ -214,14 +214,11 @@ fun BaseMediaItemMenu(
onEnqueue = onEnqueue,
onAddToPlaylist = { playlist, position ->
transaction {
val playlistId = Database.playlist(playlist.id)?.id ?: Database.insert(playlist)
Database.insert(mediaItem)
Database.insert(
SongInPlaylist(
SongPlaylistMap(
songId = mediaItem.mediaId,
playlistId = playlistId,
playlistId = Database.insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
)
)

View File

@@ -37,7 +37,6 @@ import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness
import it.vfsfitvnm.vimusic.models.Album
import it.vfsfitvnm.vimusic.models.DetailedSong
import it.vfsfitvnm.vimusic.models.SongAlbumMap
import it.vfsfitvnm.vimusic.query
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.TopAppBar
import it.vfsfitvnm.vimusic.ui.components.themed.*
@@ -73,10 +72,11 @@ fun AlbumScreen(
shareUrl = youtubeAlbum.url
).also(Database::upsert).also {
youtubeAlbum.items?.forEachIndexed { position, albumItem ->
albumItem.toMediaItem(browseId, youtubeAlbum)?.let(Database::insert)?.let { song ->
albumItem.toMediaItem(browseId, youtubeAlbum)?.let { mediaItem ->
Database.insert(mediaItem)
Database.upsert(
SongAlbumMap(
songId = song.id,
songId = mediaItem.mediaId,
albumId = browseId,
position = position
)

View File

@@ -24,7 +24,7 @@ import it.vfsfitvnm.vimusic.Database
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R
import it.vfsfitvnm.vimusic.models.Playlist
import it.vfsfitvnm.vimusic.models.SongInPlaylist
import it.vfsfitvnm.vimusic.models.SongPlaylistMap
import it.vfsfitvnm.vimusic.transaction
import it.vfsfitvnm.vimusic.ui.components.Error
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
@@ -109,7 +109,7 @@ fun IntentUriScreen(uri: Uri) {
Database.insert(mediaItem)
Database.insert(
SongInPlaylist(
SongPlaylistMap(
songId = mediaItem.mediaId,
playlistId = playlistId,
position = index

View File

@@ -27,7 +27,7 @@ import it.vfsfitvnm.route.RouteHandler
import it.vfsfitvnm.vimusic.*
import it.vfsfitvnm.vimusic.R
import it.vfsfitvnm.vimusic.models.PlaylistWithSongs
import it.vfsfitvnm.vimusic.models.SongInPlaylist
import it.vfsfitvnm.vimusic.models.SongPlaylistMap
import it.vfsfitvnm.vimusic.models.DetailedSong
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.TopAppBar
@@ -302,7 +302,7 @@ fun LocalPlaylistScreen(
}
Database.update(
SongInPlaylist(
SongPlaylistMap(
songId = playlistWithSongs.songs[index].song.id,
playlistId = playlistWithSongs.playlist.id,
position = reachedIndex

View File

@@ -32,7 +32,7 @@ import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R
import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness
import it.vfsfitvnm.vimusic.models.Playlist
import it.vfsfitvnm.vimusic.models.SongInPlaylist
import it.vfsfitvnm.vimusic.models.SongPlaylistMap
import it.vfsfitvnm.vimusic.transaction
import it.vfsfitvnm.vimusic.ui.components.LocalMenuState
import it.vfsfitvnm.vimusic.ui.components.OutcomeItem
@@ -177,7 +177,7 @@ fun PlaylistScreen(
Database.insert(mediaItem)
Database.insert(
SongInPlaylist(
SongPlaylistMap(
songId = mediaItem.mediaId,
playlistId = playlistId,
position = index

View File

@@ -82,7 +82,7 @@ fun SearchScreen(
}
val history by remember(textFieldValue.text) {
Database.getRecentQueries("%${textFieldValue.text}%").distinctUntilChanged { old, new ->
Database.queries("%${textFieldValue.text}%").distinctUntilChanged { old, new ->
old.size == new.size
}
}.collectAsState(initial = null, context = Dispatchers.IO)

View File

@@ -210,8 +210,10 @@ fun PlayerBottomSheet(
lyrics ?: ""
}.map { lyrics ->
query {
(song ?: mediaItem.let(Database::insert)).let {
Database.update(it.copy(lyrics = lyrics))
song?.let {
Database.update(song.copy(lyrics = lyrics))
} ?: Database.insert(mediaItem) { song ->
song.copy(lyrics = lyrics)
}
}
lyrics
@@ -234,8 +236,12 @@ fun PlayerBottomSheet(
onLyricsUpdate = { lyrics ->
val mediaItem = player?.currentMediaItem
query {
(song ?: mediaItem?.let(Database::insert))?.let {
Database.update(it.copy(lyrics = lyrics))
song?.let {
Database.update(song.copy(lyrics = lyrics))
} ?: mediaItem?.let {
Database.insert(mediaItem) { song ->
song.copy(lyrics = lyrics)
}
}
}
}

View File

@@ -40,6 +40,7 @@ import it.vfsfitvnm.vimusic.Database
import it.vfsfitvnm.vimusic.LocalPlayerServiceBinder
import it.vfsfitvnm.vimusic.R
import it.vfsfitvnm.vimusic.enums.ThumbnailRoundness
import it.vfsfitvnm.vimusic.models.Song
import it.vfsfitvnm.vimusic.query
import it.vfsfitvnm.vimusic.ui.components.*
import it.vfsfitvnm.vimusic.ui.components.themed.QueuedMediaItemMenu
@@ -181,7 +182,7 @@ fun PlayerView(
}
) {
val song by remember(playerState.mediaItem?.mediaId) {
playerState.mediaItem?.mediaId?.let(Database::songFlow)?.distinctUntilChanged()
playerState.mediaItem?.mediaId?.let(Database::song)?.distinctUntilChanged()
?: flowOf(
null
)
@@ -550,8 +551,10 @@ fun PlayerView(
modifier = Modifier
.clickable {
query {
(song ?: playerState.mediaItem?.let(Database::insert))?.let {
Database.update(it.toggleLike())
song?.let { song ->
Database.update(song.toggleLike())
} ?: playerState.mediaItem?.let { mediaItem ->
Database.insert(mediaItem, Song::toggleLike)
}
}
}