mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 02:27:18 -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.Library; | ||||
| using MediaBrowser.Controller.Sorting; | ||||
| using MediaBrowser.Model.Querying; | ||||
| 
 | ||||
| namespace Emby.Server.Implementations.Sorting | ||||
| { | ||||
| @ -54,7 +53,7 @@ namespace Emby.Server.Implementations.Sorting | ||||
|         /// <returns>DateTime.</returns> | ||||
|         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.Library; | ||||
| using MediaBrowser.Controller.Sorting; | ||||
| using MediaBrowser.Model.Querying; | ||||
| 
 | ||||
| namespace Emby.Server.Implementations.Sorting | ||||
| { | ||||
| @ -55,7 +54,7 @@ namespace Emby.Server.Implementations.Sorting | ||||
|         /// <returns>DateTime.</returns> | ||||
|         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.Library; | ||||
| using MediaBrowser.Controller.Sorting; | ||||
| using MediaBrowser.Model.Querying; | ||||
| 
 | ||||
| namespace Emby.Server.Implementations.Sorting | ||||
| { | ||||
| @ -55,7 +54,7 @@ namespace Emby.Server.Implementations.Sorting | ||||
|         /// <returns>DateTime.</returns> | ||||
|         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); | ||||
|         } | ||||
| 
 | ||||
|         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); | ||||
| 
 | ||||
|             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() | ||||
|  | ||||
| @ -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) | ||||
|             { | ||||
| @ -1677,12 +1677,12 @@ namespace MediaBrowser.Controller.Entities | ||||
|             }); | ||||
| 
 | ||||
|             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) | ||||
|  | ||||
| @ -542,7 +542,7 @@ namespace MediaBrowser.Controller.Entities | ||||
|             if (query.IsPlayed.HasValue) | ||||
|             { | ||||
|                 userData ??= userDataManager.GetUserData(user, item); | ||||
|                 if (userData.Played != query.IsPlayed.Value) | ||||
|                 if (item.IsPlayed(user, userData) != query.IsPlayed.Value) | ||||
|                 { | ||||
|                     return false; | ||||
|                 } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user