Change moveToTop in AddItemToPlaylistAsync to 0-based position

Signed-off-by: Kevin G <kevin@myplaceonline.com>
This commit is contained in:
Kevin G
2025-10-23 19:27:34 -05:00
parent cd9154f110
commit 79061f4635
3 changed files with 25 additions and 10 deletions

View File

@@ -198,7 +198,7 @@ namespace Emby.Server.Implementations.Playlists
return Playlist.GetPlaylistItems(items, user, options);
}
public Task AddItemToPlaylistAsync(Guid playlistId, IReadOnlyCollection<Guid> itemIds, bool? moveToTop, Guid userId)
public Task AddItemToPlaylistAsync(Guid playlistId, IReadOnlyCollection<Guid> itemIds, int? position, Guid userId)
{
var user = userId.IsEmpty() ? null : _userManager.GetUserById(userId);
@@ -210,10 +210,10 @@ namespace Emby.Server.Implementations.Playlists
{
EnableImages = true
},
moveToTop);
position);
}
private async Task AddToPlaylistInternal(Guid playlistId, IReadOnlyCollection<Guid> newItemIds, User user, DtoOptions options, bool? moveToTop = null)
private async Task AddToPlaylistInternal(Guid playlistId, IReadOnlyCollection<Guid> newItemIds, User user, DtoOptions options, int? position = null)
{
// Retrieve the existing playlist
var playlist = _libraryManager.GetItemById(playlistId) as Playlist
@@ -248,9 +248,24 @@ namespace Emby.Server.Implementations.Playlists
}
// Update the playlist in the repository
if (moveToTop.HasValue && moveToTop.Value)
if (position.HasValue)
{
playlist.LinkedChildren = [.. childrenToAdd, .. playlist.LinkedChildren];
if (position.Value <= 0)
{
playlist.LinkedChildren = [.. childrenToAdd, .. playlist.LinkedChildren];
}
else if (position.Value >= playlist.LinkedChildren.Length)
{
playlist.LinkedChildren = [.. playlist.LinkedChildren, .. childrenToAdd];
}
else
{
playlist.LinkedChildren = [
.. playlist.LinkedChildren[0..position.Value],
.. childrenToAdd,
.. playlist.LinkedChildren[position.Value..playlist.LinkedChildren.Length]
];
}
}
else
{