aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Library/UserDataManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/Library/UserDataManager.cs')
-rw-r--r--Emby.Server.Implementations/Library/UserDataManager.cs16
1 files changed, 16 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/Library/UserDataManager.cs b/Emby.Server.Implementations/Library/UserDataManager.cs
index 0680046c11..1e7068b24b 100644
--- a/Emby.Server.Implementations/Library/UserDataManager.cs
+++ b/Emby.Server.Implementations/Library/UserDataManager.cs
@@ -75,6 +75,22 @@ namespace Emby.Server.Implementations.Library
}
dbContext.SaveChanges();
+
+ // Rows under keys the item no longer reports are kept, not deleted: the key set is briefly
+ // incomplete mid-refresh, and those rows are what a deleted and re-added item reattaches by.
+ dbContext.UserData
+ .Where(e => e.ItemId == item.Id && e.UserId == user.Id && !keys.Contains(e.CustomDataKey))
+ .ExecuteUpdate(e => e
+ .SetProperty(f => f.AudioStreamIndex, userData.AudioStreamIndex)
+ .SetProperty(f => f.IsFavorite, userData.IsFavorite)
+ .SetProperty(f => f.LastPlayedDate, userData.LastPlayedDate)
+ .SetProperty(f => f.Likes, userData.Likes)
+ .SetProperty(f => f.PlaybackPositionTicks, userData.PlaybackPositionTicks)
+ .SetProperty(f => f.PlayCount, userData.PlayCount)
+ .SetProperty(f => f.Played, userData.Played)
+ .SetProperty(f => f.Rating, userData.Rating)
+ .SetProperty(f => f.SubtitleStreamIndex, userData.SubtitleStreamIndex));
+
transaction.Commit();
var userId = user.InternalId;