Use Guid for adjacentTo API parameter

This commit is contained in:
Niels van Velzen 2022-08-14 12:47:25 +02:00
parent c7edf8b565
commit 0f91244239
6 changed files with 16 additions and 17 deletions

View File

@ -159,7 +159,7 @@ namespace Jellyfin.Api.Controllers
[FromQuery] bool? hasSubtitles, [FromQuery] bool? hasSubtitles,
[FromQuery] bool? hasSpecialFeature, [FromQuery] bool? hasSpecialFeature,
[FromQuery] bool? hasTrailer, [FromQuery] bool? hasTrailer,
[FromQuery] string? adjacentTo, [FromQuery] Guid? adjacentTo,
[FromQuery] int? parentIndexNumber, [FromQuery] int? parentIndexNumber,
[FromQuery] bool? hasParentalRating, [FromQuery] bool? hasParentalRating,
[FromQuery] bool? isHd, [FromQuery] bool? isHd,
@ -614,7 +614,7 @@ namespace Jellyfin.Api.Controllers
[FromQuery] bool? hasSubtitles, [FromQuery] bool? hasSubtitles,
[FromQuery] bool? hasSpecialFeature, [FromQuery] bool? hasSpecialFeature,
[FromQuery] bool? hasTrailer, [FromQuery] bool? hasTrailer,
[FromQuery] string? adjacentTo, [FromQuery] Guid? adjacentTo,
[FromQuery] int? parentIndexNumber, [FromQuery] int? parentIndexNumber,
[FromQuery] bool? hasParentalRating, [FromQuery] bool? hasParentalRating,
[FromQuery] bool? isHd, [FromQuery] bool? isHd,

View File

@ -126,7 +126,7 @@ namespace Jellyfin.Api.Controllers
[FromQuery] bool? hasSubtitles, [FromQuery] bool? hasSubtitles,
[FromQuery] bool? hasSpecialFeature, [FromQuery] bool? hasSpecialFeature,
[FromQuery] bool? hasTrailer, [FromQuery] bool? hasTrailer,
[FromQuery] string? adjacentTo, [FromQuery] Guid? adjacentTo,
[FromQuery] int? parentIndexNumber, [FromQuery] int? parentIndexNumber,
[FromQuery] bool? hasParentalRating, [FromQuery] bool? hasParentalRating,
[FromQuery] bool? isHd, [FromQuery] bool? isHd,

View File

@ -206,7 +206,7 @@ namespace Jellyfin.Api.Controllers
[FromQuery] int? season, [FromQuery] int? season,
[FromQuery] Guid? seasonId, [FromQuery] Guid? seasonId,
[FromQuery] bool? isMissing, [FromQuery] bool? isMissing,
[FromQuery] string? adjacentTo, [FromQuery] Guid? adjacentTo,
[FromQuery] Guid? startItemId, [FromQuery] Guid? startItemId,
[FromQuery] int? startIndex, [FromQuery] int? startIndex,
[FromQuery] int? limit, [FromQuery] int? limit,
@ -278,9 +278,9 @@ namespace Jellyfin.Api.Controllers
} }
// This must be the last filter // This must be the last filter
if (!string.IsNullOrEmpty(adjacentTo)) if (adjacentTo.HasValue)
{ {
episodes = UserViewBuilder.FilterForAdjacency(episodes, adjacentTo).ToList(); episodes = UserViewBuilder.FilterForAdjacency(episodes, adjacentTo.Value).ToList();
} }
if (string.Equals(sortBy, ItemSortBy.Random, StringComparison.OrdinalIgnoreCase)) if (string.Equals(sortBy, ItemSortBy.Random, StringComparison.OrdinalIgnoreCase))
@ -326,7 +326,7 @@ namespace Jellyfin.Api.Controllers
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields, [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
[FromQuery] bool? isSpecialSeason, [FromQuery] bool? isSpecialSeason,
[FromQuery] bool? isMissing, [FromQuery] bool? isMissing,
[FromQuery] string? adjacentTo, [FromQuery] Guid? adjacentTo,
[FromQuery] bool? enableImages, [FromQuery] bool? enableImages,
[FromQuery] int? imageTypeLimit, [FromQuery] int? imageTypeLimit,
[FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes, [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes,

View File

@ -860,7 +860,7 @@ namespace MediaBrowser.Controller.Entities
return true; return true;
} }
if (!string.IsNullOrEmpty(query.AdjacentTo)) if (query.AdjacentTo.HasValue)
{ {
Logger.LogDebug("Query requires post-filtering due to AdjacentTo"); Logger.LogDebug("Query requires post-filtering due to AdjacentTo");
return true; return true;
@ -1029,9 +1029,9 @@ namespace MediaBrowser.Controller.Entities
#pragma warning restore CA1309 #pragma warning restore CA1309
// This must be the last filter // This must be the last filter
if (!string.IsNullOrEmpty(query.AdjacentTo)) if (query.AdjacentTo.HasValue)
{ {
items = UserViewBuilder.FilterForAdjacency(items.ToList(), query.AdjacentTo); items = UserViewBuilder.FilterForAdjacency(items.ToList(), query.AdjacentTo.Value);
} }
return UserViewBuilder.SortAndPage(items, null, query, LibraryManager, enableSorting); return UserViewBuilder.SortAndPage(items, null, query, LibraryManager, enableSorting);

View File

@ -129,7 +129,7 @@ namespace MediaBrowser.Controller.Entities
public Guid[] ExcludeItemIds { get; set; } public Guid[] ExcludeItemIds { get; set; }
public string? AdjacentTo { get; set; } public Guid? AdjacentTo { get; set; }
public string[] PersonTypes { get; set; } public string[] PersonTypes { get; set; }

View File

@ -433,9 +433,9 @@ namespace MediaBrowser.Controller.Entities
var user = query.User; var user = query.User;
// This must be the last filter // This must be the last filter
if (!string.IsNullOrEmpty(query.AdjacentTo)) if (query.AdjacentTo.HasValue)
{ {
items = FilterForAdjacency(items.ToList(), query.AdjacentTo); items = FilterForAdjacency(items.ToList(), query.AdjacentTo.Value);
} }
return SortAndPage(items, totalRecordLimit, query, libraryManager, true); return SortAndPage(items, totalRecordLimit, query, libraryManager, true);
@ -985,10 +985,9 @@ namespace MediaBrowser.Controller.Entities
return _userViewManager.GetUserSubView(parent.Id, type, localizationKey, sortName); return _userViewManager.GetUserSubView(parent.Id, type, localizationKey, sortName);
} }
public static IEnumerable<BaseItem> FilterForAdjacency(List<BaseItem> list, string adjacentToId) public static IEnumerable<BaseItem> FilterForAdjacency(List<BaseItem> list, Guid adjacentTo)
{ {
var adjacentToIdGuid = new Guid(adjacentToId); var adjacentToItem = list.FirstOrDefault(i => i.Id.Equals(adjacentTo));
var adjacentToItem = list.FirstOrDefault(i => i.Id.Equals(adjacentToIdGuid));
var index = list.IndexOf(adjacentToItem); var index = list.IndexOf(adjacentToItem);
@ -1005,7 +1004,7 @@ namespace MediaBrowser.Controller.Entities
nextId = list[index + 1].Id; nextId = list[index + 1].Id;
} }
return list.Where(i => i.Id.Equals(previousId) || i.Id.Equals(nextId) || i.Id.Equals(adjacentToIdGuid)); return list.Where(i => i.Id.Equals(previousId) || i.Id.Equals(nextId) || i.Id.Equals(adjacentTo));
} }
} }
} }