aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-19 01:20:47 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-19 01:20:47 -0400
commitedfc55fdf63304c047ca0946e93ffb5d12782e65 (patch)
tree3bc2d8cbde50557d78bf7dbeba8e9c2a0448b5df
parent34d4e4317aa9cd3e354ada10defb1ac1f142bf9f (diff)
fix content sometimes not appearing after restart
-rw-r--r--MediaBrowser.Controller/Entities/AggregateFolder.cs37
-rw-r--r--MediaBrowser.Controller/Entities/UserRootFolder.cs9
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs9
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs10
4 files changed, 51 insertions, 14 deletions
diff --git a/MediaBrowser.Controller/Entities/AggregateFolder.cs b/MediaBrowser.Controller/Entities/AggregateFolder.cs
index 018ff6da0..3efe46bad 100644
--- a/MediaBrowser.Controller/Entities/AggregateFolder.cs
+++ b/MediaBrowser.Controller/Entities/AggregateFolder.cs
@@ -64,10 +64,37 @@ namespace MediaBrowser.Controller.Entities
protected override IEnumerable<FileSystemMetadata> GetFileSystemChildren(IDirectoryService directoryService)
{
- return CreateResolveArgs(directoryService).FileSystemChildren;
+ return CreateResolveArgs(directoryService, true).FileSystemChildren;
}
- private ItemResolveArgs CreateResolveArgs(IDirectoryService directoryService)
+ private bool _requiresRefresh;
+ public override bool RequiresRefresh()
+ {
+ var changed = base.RequiresRefresh() || _requiresRefresh;
+
+ if (!changed)
+ {
+ var locations = PhysicalLocations.ToList();
+
+ var newLocations = CreateResolveArgs(new DirectoryService(BaseItem.FileSystem), false).PhysicalLocations.ToList();
+
+ if (!locations.SequenceEqual(newLocations))
+ {
+ changed = true;
+ }
+ }
+
+ return changed;
+ }
+
+ public override bool BeforeMetadataRefresh()
+ {
+ var changed = base.BeforeMetadataRefresh() || _requiresRefresh;
+ _requiresRefresh = false;
+ return changed;
+ }
+
+ private ItemResolveArgs CreateResolveArgs(IDirectoryService directoryService, bool setPhysicalLocations)
{
var path = ContainingFolderPath;
@@ -100,7 +127,11 @@ namespace MediaBrowser.Controller.Entities
args.FileSystemDictionary = fileSystemDictionary;
}
- PhysicalLocationsList = args.PhysicalLocations.ToList();
+ if (setPhysicalLocations)
+ {
+ _requiresRefresh = !args.PhysicalLocations.SequenceEqual(PhysicalLocations);
+ PhysicalLocationsList = args.PhysicalLocations.ToList();
+ }
return args;
}
diff --git a/MediaBrowser.Controller/Entities/UserRootFolder.cs b/MediaBrowser.Controller/Entities/UserRootFolder.cs
index b9e997d17..37c4c91b1 100644
--- a/MediaBrowser.Controller/Entities/UserRootFolder.cs
+++ b/MediaBrowser.Controller/Entities/UserRootFolder.cs
@@ -64,15 +64,6 @@ namespace MediaBrowser.Controller.Entities
return list;
}
- /// <summary>
- /// Get the children of this folder from the actual file system
- /// </summary>
- /// <returns>IEnumerable{BaseItem}.</returns>
- protected override IEnumerable<BaseItem> GetNonCachedChildren(IDirectoryService directoryService)
- {
- return base.GetNonCachedChildren(directoryService);
- }
-
public override bool BeforeMetadataRefresh()
{
var hasChanges = base.BeforeMetadataRefresh();
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 23bf50072..fdf6599da 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -1410,13 +1410,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
.Where(i => i.IsVisibleStandalone(user))
.ToList();
+ if (folders.Count == 0)
+ {
+ return new QueryResult<BaseItem>();
+ }
+
return _libraryManager.GetItemsResult(new InternalItemsQuery(user)
{
MediaTypes = new[] { MediaType.Video },
Recursive = true,
AncestorIds = folders.Select(i => i.Id.ToString("N")).ToArray(),
ExcludeLocationTypes = new[] { LocationType.Virtual },
- Limit = Math.Min(10, query.Limit ?? int.MaxValue)
+ Limit = Math.Min(10, query.Limit ?? int.MaxValue),
+ SortBy = new[] { ItemSortBy.DateCreated },
+ SortOrder = SortOrder.Descending
});
}
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index 7ab8b9151..8c7432b21 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -739,7 +739,15 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.DateLastRefreshed;
}
- _saveItemCommand.GetParameter(index++).Value = item.DateLastSaved;
+ if (item.DateLastSaved == default(DateTime))
+ {
+ _saveItemCommand.GetParameter(index++).Value = null;
+ }
+ else
+ {
+ _saveItemCommand.GetParameter(index++).Value = item.DateLastSaved;
+ }
+
_saveItemCommand.GetParameter(index++).Value = item.IsInMixedFolder;
_saveItemCommand.GetParameter(index++).Value = string.Join("|", item.LockedFields.Select(i => i.ToString()).ToArray());
_saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Studios.ToArray());