Revert IsPlayed optimization, pass UserItemData to IsPlayed when available (#14786)

This commit is contained in:
Cody Robibero 2025-09-14 11:18:21 -06:00 committed by GitHub
parent 7c6cedd90a
commit 4d36bd635d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 17 additions and 20 deletions

View File

@ -6,7 +6,6 @@ using Jellyfin.Database.Implementations.Entities;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting; using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
namespace Emby.Server.Implementations.Sorting namespace Emby.Server.Implementations.Sorting
{ {
@ -54,7 +53,7 @@ namespace Emby.Server.Implementations.Sorting
/// <returns>DateTime.</returns> /// <returns>DateTime.</returns>
private int GetValue(BaseItem x) private int GetValue(BaseItem x)
{ {
return x.IsFavoriteOrLiked(User) ? 0 : 1; return x.IsFavoriteOrLiked(User, userItemData: null) ? 0 : 1;
} }
} }
} }

View File

@ -7,7 +7,6 @@ using Jellyfin.Database.Implementations.Entities;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting; using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
namespace Emby.Server.Implementations.Sorting namespace Emby.Server.Implementations.Sorting
{ {
@ -55,7 +54,7 @@ namespace Emby.Server.Implementations.Sorting
/// <returns>DateTime.</returns> /// <returns>DateTime.</returns>
private int GetValue(BaseItem x) private int GetValue(BaseItem x)
{ {
return x.IsPlayed(User) ? 0 : 1; return x.IsPlayed(User, userItemData: null) ? 0 : 1;
} }
} }
} }

View File

@ -7,7 +7,6 @@ using Jellyfin.Database.Implementations.Entities;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting; using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
namespace Emby.Server.Implementations.Sorting namespace Emby.Server.Implementations.Sorting
{ {
@ -55,7 +54,7 @@ namespace Emby.Server.Implementations.Sorting
/// <returns>DateTime.</returns> /// <returns>DateTime.</returns>
private int GetValue(BaseItem x) private int GetValue(BaseItem x)
{ {
return x.IsUnplayed(User) ? 0 : 1; return x.IsUnplayed(User, userItemData: null) ? 0 : 1;
} }
} }
} }

View File

@ -2315,27 +2315,27 @@ namespace MediaBrowser.Controller.Entities
return UpdateToRepositoryAsync(ItemUpdateType.ImageUpdate, CancellationToken.None); return UpdateToRepositoryAsync(ItemUpdateType.ImageUpdate, CancellationToken.None);
} }
public virtual bool IsPlayed(User user) public virtual bool IsPlayed(User user, UserItemData userItemData)
{ {
var userdata = UserDataManager.GetUserData(user, this); userItemData ??= UserDataManager.GetUserData(user, this);
return userdata is not null && userdata.Played; return userItemData is not null && userItemData.Played;
} }
public bool IsFavoriteOrLiked(User user) public bool IsFavoriteOrLiked(User user, UserItemData userItemData)
{ {
var userdata = UserDataManager.GetUserData(user, this); userItemData ??= UserDataManager.GetUserData(user, this);
return userdata is not null && (userdata.IsFavorite || (userdata.Likes ?? false)); return userItemData is not null && (userItemData.IsFavorite || (userItemData.Likes ?? false));
} }
public virtual bool IsUnplayed(User user) public virtual bool IsUnplayed(User user, UserItemData userItemData)
{ {
ArgumentNullException.ThrowIfNull(user); ArgumentNullException.ThrowIfNull(user);
var userdata = UserDataManager.GetUserData(user, this); userItemData ??= UserDataManager.GetUserData(user, this);
return userdata is null || !userdata.Played; return userItemData is null || !userItemData.Played;
} }
ItemLookupInfo IHasLookupInfo<ItemLookupInfo>.GetLookupInfo() ItemLookupInfo IHasLookupInfo<ItemLookupInfo>.GetLookupInfo()

View File

@ -1666,7 +1666,7 @@ namespace MediaBrowser.Controller.Entities
} }
} }
public override bool IsPlayed(User user) public override bool IsPlayed(User user, UserItemData userItemData)
{ {
var itemsResult = GetItemList(new InternalItemsQuery(user) var itemsResult = GetItemList(new InternalItemsQuery(user)
{ {
@ -1677,12 +1677,12 @@ namespace MediaBrowser.Controller.Entities
}); });
return itemsResult return itemsResult
.All(i => i.IsPlayed(user)); .All(i => i.IsPlayed(user, userItemData: null));
} }
public override bool IsUnplayed(User user) public override bool IsUnplayed(User user, UserItemData userItemData)
{ {
return !IsPlayed(user); return !IsPlayed(user, userItemData);
} }
public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, DtoOptions fields) public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, BaseItemDto itemDto, User user, DtoOptions fields)

View File

@ -542,7 +542,7 @@ namespace MediaBrowser.Controller.Entities
if (query.IsPlayed.HasValue) if (query.IsPlayed.HasValue)
{ {
userData ??= userDataManager.GetUserData(user, item); userData ??= userDataManager.GetUserData(user, item);
if (userData.Played != query.IsPlayed.Value) if (item.IsPlayed(user, userData) != query.IsPlayed.Value)
{ {
return false; return false;
} }