sulphur 2 weeks ago committed by GitHub
commit d4c82c8c40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -284,6 +284,32 @@ namespace Emby.Server.Implementations.Data
}
}
public UserItemData GetUserDataByPresentationUniqueKey(long userId, string key)
{
if (userId <= 0)
{
throw new ArgumentNullException(nameof(userId));
}
ArgumentException.ThrowIfNullOrEmpty(key);
using (var connection = GetConnection())
{
using (var statement = connection.PrepareStatement("select key,userid,rating,played,playCount,isFavorite,playbackPositionTicks,lastPlayedDate,AudioStreamIndex,SubtitleStreamIndex from UserDatas where REPLACE(Key, '-', '')=@Key and userId=@UserId"))
{
statement.TryBind("@UserId", userId);
statement.TryBind("@Key", key);
foreach (var row in statement.ExecuteQuery())
{
return ReadRow(row);
}
}
return null;
}
}
public UserItemData GetUserData(long userId, List<string> keys)
{
ArgumentNullException.ThrowIfNull(keys);

@ -217,6 +217,11 @@ namespace Emby.Server.Implementations.Library
return dto;
}
public UserItemData GetUserDataByPresentationUniqueKey(User user, BaseItem item)
{
return _repository.GetUserDataByPresentationUniqueKey(user.InternalId, item.PresentationUniqueKey);
}
/// <inheritdoc />
public UserItemDataDto GetUserDataDto(BaseItem item, BaseItemDto itemDto, User user, DtoOptions options)
{

@ -887,6 +887,25 @@ public class ItemsController : BaseJellyfinApiController
ExcludeItemIds = excludeItemIds
});
var videoItems = itemsResult.Items.Where(item => item.MediaType == MediaType.Video);
foreach (var videoItem in videoItems)
{
var childItemIds = ((Video)videoItem).GetLocalAlternateVersionIds();
foreach (var childItemId in childItemIds)
{
var item = _libraryManager.GetItemById(childItemId);
var userData = _userDataRepository.GetUserDataByPresentationUniqueKey(user, item);
if (userData != null && userData.PlaybackPositionTicks > 0)
{
itemsResult.Items = itemsResult.Items.Append(item).ToList();
}
}
}
var returnItems = _dtoService.GetBaseItemDtos(itemsResult.Items, dtoOptions, user);
return new QueryResult<BaseItemDto>(

@ -48,6 +48,8 @@ namespace MediaBrowser.Controller.Library
UserItemData GetUserData(Guid userId, BaseItem item);
UserItemData GetUserDataByPresentationUniqueKey(User user, BaseItem item);
/// <summary>
/// Gets the user data dto.
/// </summary>

@ -37,6 +37,14 @@ namespace MediaBrowser.Controller.Persistence
/// <returns>The user data.</returns>
UserItemData GetUserData(long userId, List<string> keys);
/// <summary>
/// Gets the user data.
/// </summary>
/// <param name="userId">The user id.</param>
/// <param name="key">The key.</param>
/// <returns>The user data.</returns>
UserItemData GetUserDataByPresentationUniqueKey(long userId, string key);
/// <summary>
/// Return all user data associated with the given user.
/// </summary>

Loading…
Cancel
Save