update image inheritance

This commit is contained in:
Luke Pulverenti 2017-07-07 18:04:46 -04:00
parent 36f0d495d2
commit 24d91d9363
4 changed files with 61 additions and 18 deletions

View file

@ -1539,7 +1539,7 @@ namespace Emby.Server.Implementations.Dto
dto.ParentArtImageTag = GetImageCacheTag(parent, image); dto.ParentArtImageTag = GetImageCacheTag(parent, image);
} }
} }
if (thumbLimit > 0 && !dto.HasThumb && (dto.ParentThumbItemId == null || parent is Series)) if (thumbLimit > 0 && !dto.HasThumb && (dto.ParentThumbItemId == null || parent is Series) && !(parent is ICollectionFolder) && !(parent is UserView))
{ {
var image = allImages.FirstOrDefault(i => i.Type == ImageType.Thumb); var image = allImages.FirstOrDefault(i => i.Type == ImageType.Thumb);

View file

@ -68,23 +68,14 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// <returns>Task.</returns> /// <returns>Task.</returns>
public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress) public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
{ {
EventHandler<double> innerProgressHandler = (sender, e) => progress.Report(e * .1);
// Create a progress object for the update check // Create a progress object for the update check
var innerProgress = new SimpleProgress<double>(); var updateInfo = await _appHost.CheckForApplicationUpdate(cancellationToken, new SimpleProgress<double>()).ConfigureAwait(false);
innerProgress.ProgressChanged += innerProgressHandler;
var updateInfo = await _appHost.CheckForApplicationUpdate(cancellationToken, innerProgress).ConfigureAwait(false);
// Release the event handler
innerProgress.ProgressChanged -= innerProgressHandler;
progress.Report(10); progress.Report(10);
if (!updateInfo.IsUpdateAvailable) if (!updateInfo.IsUpdateAvailable)
{ {
Logger.Debug("No application update available."); Logger.Debug("No application update available.");
progress.Report(100);
return; return;
} }
@ -96,9 +87,9 @@ namespace Emby.Server.Implementations.ScheduledTasks
{ {
Logger.Info("Update Revision {0} available. Updating...", updateInfo.AvailableVersion); Logger.Info("Update Revision {0} available. Updating...", updateInfo.AvailableVersion);
innerProgressHandler = (sender, e) => progress.Report(e * .9 + .1); EventHandler<double> innerProgressHandler = (sender, e) => progress.Report(e * .9 + .1);
innerProgress = new SimpleProgress<double>(); var innerProgress = new SimpleProgress<double>();
innerProgress.ProgressChanged += innerProgressHandler; innerProgress.ProgressChanged += innerProgressHandler;
await _appHost.UpdateApplication(updateInfo.Package, cancellationToken, innerProgress).ConfigureAwait(false); await _appHost.UpdateApplication(updateInfo.Package, cancellationToken, innerProgress).ConfigureAwait(false);
@ -110,8 +101,6 @@ namespace Emby.Server.Implementations.ScheduledTasks
{ {
Logger.Info("A new version of " + _appHost.Name + " is available."); Logger.Info("A new version of " + _appHost.Name + " is available.");
} }
progress.Report(100);
} }
/// <summary> /// <summary>

View file

@ -513,8 +513,6 @@ namespace Emby.Server.Implementations.Updates
CurrentInstallations.Remove(tuple); CurrentInstallations.Remove(tuple);
} }
progress.Report(100);
CompletedInstallationsInternal.Add(installationInfo); CompletedInstallationsInternal.Add(installationInfo);
EventHelper.FireEventIfNotNull(PackageInstallationCompleted, this, installationEventArgs, _logger); EventHelper.FireEventIfNotNull(PackageInstallationCompleted, this, installationEventArgs, _logger);

View file

@ -50,6 +50,20 @@ namespace MediaBrowser.Api
} }
} }
[Route("/Environment/ValidatePath", "POST", Summary = "Gets the contents of a given directory in the file system")]
public class ValidatePath
{
/// <summary>
/// Gets or sets the path.
/// </summary>
/// <value>The path.</value>
[ApiMember(Name = "Path", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
public string Path { get; set; }
public bool ValidateWriteable { get; set; }
public bool? IsFile { get; set; }
}
[Route("/Environment/NetworkShares", "GET", Summary = "Gets shares from a network device")] [Route("/Environment/NetworkShares", "GET", Summary = "Gets shares from a network device")]
public class GetNetworkShares : IReturn<List<FileSystemEntryInfo>> public class GetNetworkShares : IReturn<List<FileSystemEntryInfo>>
{ {
@ -112,7 +126,7 @@ namespace MediaBrowser.Api
/// The _network manager /// The _network manager
/// </summary> /// </summary>
private readonly INetworkManager _networkManager; private readonly INetworkManager _networkManager;
private IFileSystem _fileSystem; private readonly IFileSystem _fileSystem;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="EnvironmentService" /> class. /// Initializes a new instance of the <see cref="EnvironmentService" /> class.
@ -129,6 +143,48 @@ namespace MediaBrowser.Api
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }
public void Post(ValidatePath request)
{
if (request.IsFile.HasValue)
{
if (request.IsFile.Value)
{
if (!_fileSystem.FileExists(request.Path))
{
throw new FileNotFoundException("File not found", request.Path);
}
}
else
{
if (!_fileSystem.DirectoryExists(request.Path))
{
throw new FileNotFoundException("File not found", request.Path);
}
}
}
else
{
if (!_fileSystem.FileExists(request.Path) && !_fileSystem.DirectoryExists(request.Path))
{
throw new FileNotFoundException("Path not found", request.Path);
}
if (request.ValidateWriteable)
{
EnsureWriteAccess(request.Path);
}
}
}
protected void EnsureWriteAccess(string path)
{
var file = Path.Combine(path, Guid.NewGuid().ToString());
_fileSystem.WriteAllText(file, string.Empty);
_fileSystem.DeleteFile(file);
}
public object Get(GetDefaultDirectoryBrowser request) public object Get(GetDefaultDirectoryBrowser request)
{ {
var result = new DefaultDirectoryBrowserInfo(); var result = new DefaultDirectoryBrowserInfo();