Bladeren bron

Combine library item event handlers

Patrick Barron 1 jaar geleden
bovenliggende
commit
8f5f0a0310
1 gewijzigde bestanden met toevoegingen van 13 en 70 verwijderingen
  1. 13 70
      Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs

+ 13 - 70
Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs

@@ -146,98 +146,41 @@ namespace Emby.Server.Implementations.EntryPoints
             => item is Folder { IsRoot: false, IsTopParent: true }
                 and not (AggregateFolder or UserRootFolder or UserView or Channel);
 
-        /// <summary>
-        /// Handles the ItemAdded event of the libraryManager control.
-        /// </summary>
-        /// <param name="sender">The source of the event.</param>
-        /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param>
         private void OnLibraryItemAdded(object sender, ItemChangeEventArgs e)
-        {
-            if (!FilterItem(e.Item))
-            {
-                return;
-            }
-
-            lock (_libraryChangedSyncLock)
-            {
-                if (LibraryUpdateTimer is null)
-                {
-                    LibraryUpdateTimer = new Timer(
-                        LibraryUpdateTimerCallback,
-                        null,
-                        TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration),
-                        Timeout.InfiniteTimeSpan);
-                }
-                else
-                {
-                    LibraryUpdateTimer.Change(TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
-                }
+            => OnLibraryChange(e.Item, e.Parent, _itemsAdded, _foldersAddedTo);
 
-                if (e.Item.GetParent() is Folder parent)
-                {
-                    _foldersAddedTo.Add(parent);
-                }
-
-                _itemsAdded.Add(e.Item);
-            }
-        }
-
-        /// <summary>
-        /// Handles the ItemUpdated event of the libraryManager control.
-        /// </summary>
-        /// <param name="sender">The source of the event.</param>
-        /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param>
         private void OnLibraryItemUpdated(object sender, ItemChangeEventArgs e)
-        {
-            if (!FilterItem(e.Item))
-            {
-                return;
-            }
+            => OnLibraryChange(e.Item, e.Parent, _itemsUpdated, null);
 
-            lock (_libraryChangedSyncLock)
-            {
-                if (LibraryUpdateTimer is null)
-                {
-                    LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
-                }
-                else
-                {
-                    LibraryUpdateTimer.Change(TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
-                }
-
-                _itemsUpdated.Add(e.Item);
-            }
-        }
-
-        /// <summary>
-        /// Handles the ItemRemoved event of the libraryManager control.
-        /// </summary>
-        /// <param name="sender">The source of the event.</param>
-        /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param>
         private void OnLibraryItemRemoved(object sender, ItemChangeEventArgs e)
+            => OnLibraryChange(e.Item, e.Parent, _itemsRemoved, _foldersRemovedFrom);
+
+        private void OnLibraryChange(BaseItem item, BaseItem parent, List<BaseItem> itemsList, List<Folder> foldersList)
         {
-            if (!FilterItem(e.Item))
+            if (!FilterItem(item))
             {
                 return;
             }
 
             lock (_libraryChangedSyncLock)
             {
+                var updateDuration = TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration);
+
                 if (LibraryUpdateTimer is null)
                 {
-                    LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
+                    LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, updateDuration, Timeout.InfiniteTimeSpan);
                 }
                 else
                 {
-                    LibraryUpdateTimer.Change(TimeSpan.FromSeconds(_configurationManager.Configuration.LibraryUpdateDuration), Timeout.InfiniteTimeSpan);
+                    LibraryUpdateTimer.Change(updateDuration, Timeout.InfiniteTimeSpan);
                 }
 
-                if (e.Parent is Folder parent)
+                if (foldersList is not null && parent is Folder folder)
                 {
-                    _foldersRemovedFrom.Add(parent);
+                    foldersList.Add(folder);
                 }
 
-                _itemsRemoved.Add(e.Item);
+                itemsList.Add(item);
             }
         }