aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-02-27 20:07:09 +0100
committerShadowghost <Ghost_of_Stone@web.de>2026-02-27 20:07:09 +0100
commit46ffe0af9cc45f84ac91e09991e8b4fde62867ad (patch)
treea6113dc9b019c361ce3444d2566a7b8880033f3d /Emby.Server.Implementations
parent826e21ecc85be03e15c4d2ad2f403ccb4dc2068e (diff)
Fix version promotion if multiple versions change
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs6
1 files changed, 4 insertions, 2 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 0ad63ef84a..d4c03ecc75 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -410,7 +410,8 @@ namespace Emby.Server.Implementations.Library
// OwnerId check: items with OwnerId set are alternate versions or extras, not primaries
if (item is Video video && !video.PrimaryVersionId.HasValue && video.OwnerId.IsEmpty())
{
- var alternateVersions = GetLocalAlternateVersionIds(video)
+ var localAlternateIds = GetLocalAlternateVersionIds(video).ToHashSet();
+ var alternateVersions = localAlternateIds
.Concat(GetLinkedAlternateVersions(video).Select(v => v.Id))
.Distinct()
.Select(id => GetItemById(id))
@@ -447,7 +448,8 @@ namespace Emby.Server.Implementations.Library
foreach (var alternate in alternateVersions.Skip(1))
{
alternate.SetPrimaryVersionId(newPrimary.Id);
- alternate.OwnerId = Guid.Empty;
+ // Only set OwnerId for local alternates; linked alternates are independent items
+ alternate.OwnerId = localAlternateIds.Contains(alternate.Id) ? newPrimary.Id : Guid.Empty;
alternate.UpdateToRepositoryAsync(ItemUpdateType.MetadataEdit, CancellationToken.None).GetAwaiter().GetResult();
}
}