mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-10 01:38:49 +01:00
Moved userdata to user manager to resolve concurrency issues. must delete userdata and displaypreferences db files.
This commit is contained in:
@@ -241,12 +241,15 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// <returns>IEnumerable{BaseItem}.</returns>
|
||||
private IEnumerable<BaseItem> ApplyFilter(IEnumerable<BaseItem> items, ItemFilter filter, User user)
|
||||
{
|
||||
// Avoids implicitly captured closure
|
||||
var currentUser = user;
|
||||
|
||||
switch (filter)
|
||||
{
|
||||
case ItemFilter.Likes:
|
||||
return items.Where(item =>
|
||||
{
|
||||
var userdata = item.GetUserData(user, false);
|
||||
var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
return userdata != null && userdata.Likes.HasValue && userdata.Likes.Value;
|
||||
});
|
||||
@@ -254,7 +257,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
case ItemFilter.Dislikes:
|
||||
return items.Where(item =>
|
||||
{
|
||||
var userdata = item.GetUserData(user, false);
|
||||
var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
return userdata != null && userdata.Likes.HasValue && !userdata.Likes.Value;
|
||||
});
|
||||
@@ -262,18 +265,18 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
case ItemFilter.IsFavorite:
|
||||
return items.Where(item =>
|
||||
{
|
||||
var userdata = item.GetUserData(user, false);
|
||||
var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
return userdata != null && userdata.IsFavorite;
|
||||
});
|
||||
|
||||
case ItemFilter.IsRecentlyAdded:
|
||||
return items.Where(item => item.IsRecentlyAdded(user));
|
||||
return items.Where(item => item.IsRecentlyAdded(currentUser));
|
||||
|
||||
case ItemFilter.IsResumable:
|
||||
return items.Where(item =>
|
||||
{
|
||||
var userdata = item.GetUserData(user, false);
|
||||
var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
return userdata != null && userdata.PlaybackPositionTicks > 0;
|
||||
});
|
||||
@@ -281,7 +284,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
case ItemFilter.IsPlayed:
|
||||
return items.Where(item =>
|
||||
{
|
||||
var userdata = item.GetUserData(user, false);
|
||||
var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
return userdata != null && userdata.PlayCount > 0;
|
||||
});
|
||||
@@ -289,7 +292,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
case ItemFilter.IsUnplayed:
|
||||
return items.Where(item =>
|
||||
{
|
||||
var userdata = item.GetUserData(user, false);
|
||||
var userdata = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
return userdata == null || userdata.PlayCount == 0;
|
||||
});
|
||||
|
||||
@@ -503,12 +503,12 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
|
||||
|
||||
// Get the user data for this item
|
||||
var data = item.GetUserData(user, true);
|
||||
var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
// Set favorite status
|
||||
data.IsFavorite = true;
|
||||
|
||||
var task = _userManager.SaveUserDataForItem(user, item, data);
|
||||
var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
@@ -524,12 +524,12 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
|
||||
|
||||
// Get the user data for this item
|
||||
var data = item.GetUserData(user, true);
|
||||
var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
// Set favorite status
|
||||
data.IsFavorite = false;
|
||||
|
||||
var task = _userManager.SaveUserDataForItem(user, item, data);
|
||||
var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
@@ -545,11 +545,11 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
|
||||
|
||||
// Get the user data for this item
|
||||
var data = item.GetUserData(user, true);
|
||||
var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
data.Rating = null;
|
||||
|
||||
var task = _userManager.SaveUserDataForItem(user, item, data);
|
||||
var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
@@ -565,11 +565,11 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);
|
||||
|
||||
// Get the user data for this item
|
||||
var data = item.GetUserData(user, true);
|
||||
var data = _userManager.GetUserData(user.Id, item.UserDataId).Result;
|
||||
|
||||
data.Likes = request.Likes;
|
||||
|
||||
var task = _userManager.SaveUserDataForItem(user, item, data);
|
||||
var task = _userManager.SaveUserData(user.Id, item.UserDataId, data, CancellationToken.None);
|
||||
|
||||
Task.WaitAll(task);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user