musikr: re-add playlist renaming

This commit is contained in:
Alexander Capehart 2024-12-17 12:04:24 -05:00
parent 9f657adf94
commit f4822a4e40
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
2 changed files with 15 additions and 4 deletions

View file

@ -32,7 +32,7 @@ internal data class LibraryImpl(
override val albums: Collection<AlbumImpl>,
override val artists: Collection<ArtistImpl>,
override val genres: Collection<GenreImpl>,
override val playlists: Collection<Playlist>,
override val playlists: Collection<PlaylistImpl>,
private val storedPlaylists: StoredPlaylists,
private val playlistInterpreter: PlaylistInterpreter
) : MutableLibrary {
@ -58,14 +58,21 @@ internal data class LibraryImpl(
override suspend fun createPlaylist(name: String, songs: List<Song>): MutableLibrary {
val handle = storedPlaylists.new(name, songs)
val prePlaylist = playlistInterpreter.interpret(name, handle)
val core = NewPlaylistCore(prePlaylist, songs)
val postPlaylist = playlistInterpreter.interpret(name, handle)
val core = NewPlaylistCore(postPlaylist, songs)
val playlist = PlaylistImpl(core)
return copy(playlists = playlists + playlist)
}
override suspend fun renamePlaylist(playlist: Playlist, name: String): MutableLibrary {
return this
val playlistImpl = requireNotNull(playlistUidMap[playlist.uid]) {
"Playlist to rename is not in this library"
}
playlistImpl.handle.rename(name)
val postPlaylist = playlistInterpreter.interpret(name, playlistImpl.handle)
val core = NewPlaylistCore(postPlaylist, playlist.songs)
val newPlaylist = PlaylistImpl(core)
return copy(playlists = playlists - playlistImpl + newPlaylist)
}
override suspend fun addToPlaylist(playlist: Playlist, songs: List<Song>): MutableLibrary {

View file

@ -21,6 +21,7 @@ package org.oxycblt.musikr.model
import org.oxycblt.musikr.Playlist
import org.oxycblt.musikr.Song
import org.oxycblt.musikr.cover.Cover
import org.oxycblt.musikr.playlist.interpret.PlaylistInterpreter
import org.oxycblt.musikr.playlist.interpret.PrePlaylistInfo
import org.oxycblt.musikr.tag.Name
@ -36,6 +37,8 @@ internal class PlaylistImpl(private val core: PlaylistCore) : Playlist {
override val cover = Cover.multi(core.songs)
override val songs = core.songs
val handle = core.prePlaylist.handle
private var hashCode =
31 * (31 * uid.hashCode() + core.prePlaylist.hashCode()) + songs.hashCode()
@ -45,4 +48,5 @@ internal class PlaylistImpl(private val core: PlaylistCore) : Playlist {
override fun hashCode() = hashCode
override fun toString() = "Playlist(uid=$uid, name=$name)"
}