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 74b3dea97..6dc91a392 100644
--- a/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt
+++ b/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
+
package org.oxycblt.musikr.model
import org.oxycblt.musikr.Music
@@ -23,9 +23,11 @@ import org.oxycblt.musikr.MutableLibrary
import org.oxycblt.musikr.Playlist
import org.oxycblt.musikr.Song
import org.oxycblt.musikr.fs.Path
+import org.oxycblt.musikr.playlist.PlaylistHandle
import org.oxycblt.musikr.playlist.db.StoredPlaylists
import org.oxycblt.musikr.playlist.interpret.PlaylistInterpreter
import org.oxycblt.musikr.playlist.interpret.PostPlaylist
+import org.oxycblt.musikr.playlist.interpret.PrePlaylistInfo
internal data class LibraryImpl(
override val songs: Collection,
@@ -68,15 +70,22 @@ internal data class LibraryImpl(
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 prePlaylist = playlistImpl.core.prePlaylist
+ prePlaylist.handle.rename(name)
+ val postPlaylist = playlistInterpreter.interpret(name, prePlaylist.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 {
- return this
+ val playlistImpl = requireNotNull(playlistUidMap[playlist.uid]) {
+ "Playlist to add to is not in this library"
+ }
+ playlistImpl.core.prePlaylist.handle.add(songs)
+ val core = NewPlaylistCore(playlistImpl.core.prePlaylist, playlistImpl.songs + songs)
+ val newPlaylist = PlaylistImpl(core)
+ return copy(playlists = playlists - playlistImpl + newPlaylist)
}
override suspend fun rewritePlaylist(playlist: Playlist, songs: List): MutableLibrary {
@@ -88,7 +97,7 @@ internal data class LibraryImpl(
}
private class NewPlaylistCore(
- override val prePlaylist: PostPlaylist,
+ override val prePlaylist: PrePlaylistInfo,
override val songs: List
) : PlaylistCore
}
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 85dfc1e16..f42f2d505 100644
--- a/musikr/src/main/java/org/oxycblt/musikr/model/PlaylistImpl.kt
+++ b/musikr/src/main/java/org/oxycblt/musikr/model/PlaylistImpl.kt
@@ -30,15 +30,13 @@ internal interface PlaylistCore {
val songs: List
}
-internal class PlaylistImpl(private val core: PlaylistCore) : Playlist {
+internal class PlaylistImpl(val core: PlaylistCore) : Playlist {
override val uid = core.prePlaylist.handle.uid
override val name: Name.Known = core.prePlaylist.name
override val durationMs = core.songs.sumOf { it.durationMs }
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()