mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-09-29 15:31:04 -04:00
Revert IsPlayed optimization, pass UserItemData to IsPlayed when available (#14786)
This commit is contained in:
parent
7c6cedd90a
commit
4d36bd635d
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user