mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-06 05:47:14 -04:00
update image inheritance
This commit is contained in:
parent
36f0d495d2
commit
24d91d9363
@ -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);
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user