fix content sometimes not appearing after restart

This commit is contained in:
Luke Pulverenti 2016-05-19 01:20:47 -04:00
parent 34d4e4317a
commit edfc55fdf6
4 changed files with 51 additions and 14 deletions

View File

@ -64,10 +64,37 @@ namespace MediaBrowser.Controller.Entities
protected override IEnumerable<FileSystemMetadata> GetFileSystemChildren(IDirectoryService directoryService) 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; var path = ContainingFolderPath;
@ -100,7 +127,11 @@ namespace MediaBrowser.Controller.Entities
args.FileSystemDictionary = fileSystemDictionary; args.FileSystemDictionary = fileSystemDictionary;
} }
if (setPhysicalLocations)
{
_requiresRefresh = !args.PhysicalLocations.SequenceEqual(PhysicalLocations);
PhysicalLocationsList = args.PhysicalLocations.ToList(); PhysicalLocationsList = args.PhysicalLocations.ToList();
}
return args; return args;
} }

View File

@ -64,15 +64,6 @@ namespace MediaBrowser.Controller.Entities
return list; 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() public override bool BeforeMetadataRefresh()
{ {
var hasChanges = base.BeforeMetadataRefresh(); var hasChanges = base.BeforeMetadataRefresh();

View File

@ -1410,13 +1410,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
.Where(i => i.IsVisibleStandalone(user)) .Where(i => i.IsVisibleStandalone(user))
.ToList(); .ToList();
if (folders.Count == 0)
{
return new QueryResult<BaseItem>();
}
return _libraryManager.GetItemsResult(new InternalItemsQuery(user) return _libraryManager.GetItemsResult(new InternalItemsQuery(user)
{ {
MediaTypes = new[] { MediaType.Video }, MediaTypes = new[] { MediaType.Video },
Recursive = true, Recursive = true,
AncestorIds = folders.Select(i => i.Id.ToString("N")).ToArray(), AncestorIds = folders.Select(i => i.Id.ToString("N")).ToArray(),
ExcludeLocationTypes = new[] { LocationType.Virtual }, 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
}); });
} }

View File

@ -739,7 +739,15 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.DateLastRefreshed; _saveItemCommand.GetParameter(index++).Value = item.DateLastRefreshed;
} }
if (item.DateLastSaved == default(DateTime))
{
_saveItemCommand.GetParameter(index++).Value = null;
}
else
{
_saveItemCommand.GetParameter(index++).Value = item.DateLastSaved; _saveItemCommand.GetParameter(index++).Value = item.DateLastSaved;
}
_saveItemCommand.GetParameter(index++).Value = item.IsInMixedFolder; _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.LockedFields.Select(i => i.ToString()).ToArray());
_saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Studios.ToArray()); _saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Studios.ToArray());