From f4822a4e40c0985e933697b335b14a436b4c1326 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Tue, 17 Dec 2024 12:04:24 -0500 Subject: [PATCH] musikr: re-add playlist renaming --- .../java/org/oxycblt/musikr/model/LibraryImpl.kt | 15 +++++++++++---- .../java/org/oxycblt/musikr/model/PlaylistImpl.kt | 4 ++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt b/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt index 0d3907c4a..74b3dea97 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt @@ -32,7 +32,7 @@ internal data class LibraryImpl( override val albums: Collection, override val artists: Collection, override val genres: Collection, - override val playlists: Collection, + override val playlists: Collection, 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): 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): MutableLibrary { diff --git a/musikr/src/main/java/org/oxycblt/musikr/model/PlaylistImpl.kt b/musikr/src/main/java/org/oxycblt/musikr/model/PlaylistImpl.kt index 0972fd6a3..85dfc1e16 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/model/PlaylistImpl.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/model/PlaylistImpl.kt @@ -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)" + }