aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Library/UserDataManager.cs
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-10-24 09:56:04 +0200
committerShadowghost <Ghost_of_Stone@web.de>2026-10-24 09:56:04 +0200
commitd95c2e1425d0d902e8191260ba9151f686aa2650 (patch)
tree3bc937664dcf9fe8d7659b00d92fc3a6c61be805 /Emby.Server.Implementations/Library/UserDataManager.cs
parentd3a92c69f8c1c5d1cda803a35f03175d6ba3b091 (diff)
parentc7ce6a1b56ee7dcc1896250df0f2f9deaa828a81 (diff)
Merge branch 'master' into port-async-migration-routines
# Conflicts: # Jellyfin.Server/Migrations/Routines/20260915120000_MigrateRatingLevels.cs
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;