aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/CollectionFolder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities/CollectionFolder.cs')
-rw-r--r--MediaBrowser.Controller/Entities/CollectionFolder.cs17
1 files changed, 15 insertions, 2 deletions
diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs
index cf615788ee..ffdc8421da 100644
--- a/MediaBrowser.Controller/Entities/CollectionFolder.cs
+++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs
@@ -79,14 +79,27 @@ namespace MediaBrowser.Controller.Entities
public CollectionType? CollectionType { get; set; }
/// <summary>
- /// Gets the item's children.
+ /// Gets or sets the item's children.
/// </summary>
/// <remarks>
/// Our children are actually just references to the ones in the physical root...
+ /// Setting to null propagates invalidation to physical folders since the getter
+ /// always delegates to <see cref="GetActualChildren"/> and never reads the backing field.
/// </remarks>
/// <value>The actual children.</value>
[JsonIgnore]
- public override IEnumerable<BaseItem> Children => GetActualChildren();
+ public override IEnumerable<BaseItem> Children
+ {
+ get => GetActualChildren();
+ set
+ {
+ // The getter delegates to physical folders, so invalidate their caches.
+ foreach (var folder in GetPhysicalFolders(true))
+ {
+ folder.Children = null;
+ }
+ }
+ }
[JsonIgnore]
public override bool SupportsPeople => false;