update FindByPath

pull/702/head
Luke Pulverenti 8 years ago
parent 5dbf0ddb93
commit 3dc494c02d

@ -1571,35 +1571,6 @@ namespace MediaBrowser.Controller.Entities
await Task.WhenAll(tasks).ConfigureAwait(false);
}
/// <summary>
/// Finds an item by path, recursively
/// </summary>
/// <param name="path">The path.</param>
/// <returns>BaseItem.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
public BaseItem FindByPath(string path)
{
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException();
}
if (string.Equals(Path, path, StringComparison.OrdinalIgnoreCase))
{
return this;
}
if (PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
{
return this;
}
return GetRecursiveChildren(i => string.Equals(i.Path, path, StringComparison.OrdinalIgnoreCase) ||
(!i.IsFolder && !i.IsInMixedFolder && string.Equals(i.ContainingFolderPath, path, StringComparison.OrdinalIgnoreCase)) ||
i.PhysicalLocations.Contains(path, StringComparer.OrdinalIgnoreCase))
.FirstOrDefault();
}
public override bool IsPlayed(User user)
{
var itemsResult = GetItems(new InternalItemsQuery(user)

@ -787,20 +787,14 @@ namespace MediaBrowser.Server.Implementations.Library
IsFolder = isFolder
};
// Only use the database result if there's exactly one item, otherwise we run the risk of returning old data that hasn't been cleaned yet.
var items = GetItemIds(query).Select(GetItemById).Where(i => i != null).ToArray();
// If this returns multiple items it could be tricky figuring out which one is correct.
// In most cases, the newest one will be and the others obsolete but not yet cleaned up
if (items.Length == 1)
{
return items[0];
}
if (items.Length == 0)
{
return null;
}
return RootFolder.FindByPath(path);
return GetItemIds(query)
.Select(GetItemById)
.Where(i => i != null)
.OrderByDescending(i => i.DateCreated)
.FirstOrDefault();
}
/// <summary>

Loading…
Cancel
Save