|
@@ -283,6 +283,16 @@ namespace Emby.Server.Implementations.Playlists
|
|
RefreshPriority.High);
|
|
RefreshPriority.High);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ internal static int DetermineAdjustedIndex(int newPriorIndexAllChildren, int newIndex)
|
|
|
|
+ {
|
|
|
|
+ if (newIndex == 0)
|
|
|
|
+ {
|
|
|
|
+ return newPriorIndexAllChildren > 0 ? newPriorIndexAllChildren - 1 : 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return newPriorIndexAllChildren + 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
public async Task MoveItemAsync(string playlistId, string entryId, int newIndex, Guid callingUserId)
|
|
public async Task MoveItemAsync(string playlistId, string entryId, int newIndex, Guid callingUserId)
|
|
{
|
|
{
|
|
if (_libraryManager.GetItemById(playlistId) is not Playlist playlist)
|
|
if (_libraryManager.GetItemById(playlistId) is not Playlist playlist)
|
|
@@ -305,7 +315,7 @@ namespace Emby.Server.Implementations.Playlists
|
|
var newPriorItemIndex = newIndex > oldIndexAccessible ? newIndex : newIndex - 1 < 0 ? 0 : newIndex - 1;
|
|
var newPriorItemIndex = newIndex > oldIndexAccessible ? newIndex : newIndex - 1 < 0 ? 0 : newIndex - 1;
|
|
var newPriorItemId = accessibleChildren[newPriorItemIndex].Item1.ItemId;
|
|
var newPriorItemId = accessibleChildren[newPriorItemIndex].Item1.ItemId;
|
|
var newPriorItemIndexOnAllChildren = children.FindIndex(c => c.Item1.ItemId.Equals(newPriorItemId));
|
|
var newPriorItemIndexOnAllChildren = children.FindIndex(c => c.Item1.ItemId.Equals(newPriorItemId));
|
|
- var adjustedNewIndex = newPriorItemIndexOnAllChildren + 1;
|
|
|
|
|
|
+ var adjustedNewIndex = DetermineAdjustedIndex(newPriorItemIndexOnAllChildren, newIndex);
|
|
|
|
|
|
var item = playlist.LinkedChildren.FirstOrDefault(i => string.Equals(entryId, i.ItemId?.ToString("N", CultureInfo.InvariantCulture), StringComparison.OrdinalIgnoreCase));
|
|
var item = playlist.LinkedChildren.FirstOrDefault(i => string.Equals(entryId, i.ItemId?.ToString("N", CultureInfo.InvariantCulture), StringComparison.OrdinalIgnoreCase));
|
|
if (item is null)
|
|
if (item is null)
|