Sfoglia il codice sorgente

Merge pull request #11963 from gnattu/fix-rename-lib

Fix Library renaming
Joshua M. Boniface 1 anno fa
parent
commit
b78efd6b1e

+ 1 - 1
Emby.Server.Implementations/Library/LibraryManager.cs

@@ -1029,7 +1029,7 @@ namespace Emby.Server.Implementations.Library
             }
             }
         }
         }
 
 
-        private async Task ValidateTopLibraryFolders(CancellationToken cancellationToken, bool removeRoot = false)
+        public async Task ValidateTopLibraryFolders(CancellationToken cancellationToken, bool removeRoot = false)
         {
         {
             await RootFolder.RefreshMetadata(cancellationToken).ConfigureAwait(false);
             await RootFolder.RefreshMetadata(cancellationToken).ConfigureAwait(false);
 
 

+ 15 - 1
Jellyfin.Api/Controllers/LibraryStructureController.cs

@@ -180,7 +180,21 @@ public class LibraryStructureController : BaseJellyfinApiController
                 // No need to start if scanning the library because it will handle it
                 // No need to start if scanning the library because it will handle it
                 if (refreshLibrary)
                 if (refreshLibrary)
                 {
                 {
-                    await _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None).ConfigureAwait(false);
+                    await _libraryManager.ValidateTopLibraryFolders(CancellationToken.None, true).ConfigureAwait(false);
+                    var newLib = _libraryManager.GetUserRootFolder().Children.FirstOrDefault(f => f.Path.Equals(newPath, StringComparison.OrdinalIgnoreCase));
+                    if (newLib is CollectionFolder folder)
+                    {
+                        foreach (var child in folder.GetPhysicalFolders())
+                        {
+                            await child.RefreshMetadata(CancellationToken.None).ConfigureAwait(false);
+                            await child.ValidateChildren(new Progress<double>(), CancellationToken.None).ConfigureAwait(false);
+                        }
+                    }
+                    else
+                    {
+                        // We don't know if this one can be validated individually, trigger a new validation
+                        await _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None).ConfigureAwait(false);
+                    }
                 }
                 }
                 else
                 else
                 {
                 {

+ 8 - 0
MediaBrowser.Controller/Library/ILibraryManager.cs

@@ -149,6 +149,14 @@ namespace MediaBrowser.Controller.Library
         /// <returns>Task.</returns>
         /// <returns>Task.</returns>
         Task ValidateMediaLibrary(IProgress<double> progress, CancellationToken cancellationToken);
         Task ValidateMediaLibrary(IProgress<double> progress, CancellationToken cancellationToken);
 
 
+        /// <summary>
+        /// Reloads the root media folder.
+        /// </summary>
+        /// <param name="cancellationToken">The cancellation token.</param>
+        /// <param name="removeRoot">Is remove the library itself allowed.</param>
+        /// <returns>Task.</returns>
+        Task ValidateTopLibraryFolders(CancellationToken cancellationToken, bool removeRoot = false);
+
         Task UpdateImagesAsync(BaseItem item, bool forceUpdate = false);
         Task UpdateImagesAsync(BaseItem item, bool forceUpdate = false);
 
 
         /// <summary>
         /// <summary>