Browse Source

update image inheritance

Luke Pulverenti 8 years ago
parent
commit
24d91d9363

+ 1 - 1
Emby.Server.Implementations/Dto/DtoService.cs

@@ -1539,7 +1539,7 @@ namespace Emby.Server.Implementations.Dto
                         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);
 

+ 3 - 14
Emby.Server.Implementations/ScheduledTasks/SystemUpdateTask.cs

@@ -68,23 +68,14 @@ namespace Emby.Server.Implementations.ScheduledTasks
         /// <returns>Task.</returns>
         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
-            var innerProgress = new SimpleProgress<double>();
-            innerProgress.ProgressChanged += innerProgressHandler;
-
-            var updateInfo = await _appHost.CheckForApplicationUpdate(cancellationToken, innerProgress).ConfigureAwait(false);
-
-            // Release the event handler
-            innerProgress.ProgressChanged -= innerProgressHandler;
+            var updateInfo = await _appHost.CheckForApplicationUpdate(cancellationToken, new SimpleProgress<double>()).ConfigureAwait(false);
 
             progress.Report(10);
 
             if (!updateInfo.IsUpdateAvailable)
             {
                 Logger.Debug("No application update available.");
-                progress.Report(100);
                 return;
             }
 
@@ -96,9 +87,9 @@ namespace Emby.Server.Implementations.ScheduledTasks
             {
                 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;
 
                 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.");
             }
-
-            progress.Report(100);
         }
 
         /// <summary>

+ 0 - 2
Emby.Server.Implementations/Updates/InstallationManager.cs

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

+ 57 - 1
MediaBrowser.Api/EnvironmentService.cs

@@ -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")]
     public class GetNetworkShares : IReturn<List<FileSystemEntryInfo>>
     {
@@ -112,7 +126,7 @@ namespace MediaBrowser.Api
         /// The _network manager
         /// </summary>
         private readonly INetworkManager _networkManager;
-        private IFileSystem _fileSystem;
+        private readonly IFileSystem _fileSystem;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="EnvironmentService" /> class.
@@ -129,6 +143,48 @@ namespace MediaBrowser.Api
             _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)
         {
             var result = new DefaultDirectoryBrowserInfo();