|
@@ -23,10 +23,12 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
public class LibraryChangedNotifier : IServerEntryPoint
|
|
|
{
|
|
|
/// <summary>
|
|
|
- /// The library manager.
|
|
|
+ /// The library update duration.
|
|
|
/// </summary>
|
|
|
- private readonly ILibraryManager _libraryManager;
|
|
|
+ private const int LibraryUpdateDuration = 30000;
|
|
|
|
|
|
+ private readonly ILibraryManager _libraryManager;
|
|
|
+ private readonly IProviderManager _providerManager;
|
|
|
private readonly ISessionManager _sessionManager;
|
|
|
private readonly IUserManager _userManager;
|
|
|
private readonly ILogger<LibraryChangedNotifier> _logger;
|
|
@@ -38,23 +40,10 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
|
|
|
private readonly List<Folder> _foldersAddedTo = new List<Folder>();
|
|
|
private readonly List<Folder> _foldersRemovedFrom = new List<Folder>();
|
|
|
-
|
|
|
private readonly List<BaseItem> _itemsAdded = new List<BaseItem>();
|
|
|
private readonly List<BaseItem> _itemsRemoved = new List<BaseItem>();
|
|
|
private readonly List<BaseItem> _itemsUpdated = new List<BaseItem>();
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// Gets or sets the library update timer.
|
|
|
- /// </summary>
|
|
|
- /// <value>The library update timer.</value>
|
|
|
- private Timer LibraryUpdateTimer { get; set; }
|
|
|
-
|
|
|
- /// <summary>
|
|
|
- /// The library update duration.
|
|
|
- /// </summary>
|
|
|
- private const int LibraryUpdateDuration = 30000;
|
|
|
-
|
|
|
- private readonly IProviderManager _providerManager;
|
|
|
+ private readonly Dictionary<Guid, DateTime> _lastProgressMessageTimes = new Dictionary<Guid, DateTime>();
|
|
|
|
|
|
public LibraryChangedNotifier(
|
|
|
ILibraryManager libraryManager,
|
|
@@ -70,22 +59,26 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
_providerManager = providerManager;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Gets or sets the library update timer.
|
|
|
+ /// </summary>
|
|
|
+ /// <value>The library update timer.</value>
|
|
|
+ private Timer LibraryUpdateTimer { get; set; }
|
|
|
+
|
|
|
public Task RunAsync()
|
|
|
{
|
|
|
- _libraryManager.ItemAdded += libraryManager_ItemAdded;
|
|
|
- _libraryManager.ItemUpdated += libraryManager_ItemUpdated;
|
|
|
- _libraryManager.ItemRemoved += libraryManager_ItemRemoved;
|
|
|
+ _libraryManager.ItemAdded += OnLibraryItemAdded;
|
|
|
+ _libraryManager.ItemUpdated += OnLibraryItemUpdated;
|
|
|
+ _libraryManager.ItemRemoved += OnLibraryItemRemoved;
|
|
|
|
|
|
- _providerManager.RefreshCompleted += _providerManager_RefreshCompleted;
|
|
|
- _providerManager.RefreshStarted += _providerManager_RefreshStarted;
|
|
|
- _providerManager.RefreshProgress += _providerManager_RefreshProgress;
|
|
|
+ _providerManager.RefreshCompleted += OnProviderRefreshCompleted;
|
|
|
+ _providerManager.RefreshStarted += OnProviderRefreshStarted;
|
|
|
+ _providerManager.RefreshProgress += OnProviderRefreshProgress;
|
|
|
|
|
|
return Task.CompletedTask;
|
|
|
}
|
|
|
|
|
|
- private Dictionary<Guid, DateTime> _lastProgressMessageTimes = new Dictionary<Guid, DateTime>();
|
|
|
-
|
|
|
- private void _providerManager_RefreshProgress(object sender, GenericEventArgs<Tuple<BaseItem, double>> e)
|
|
|
+ private void OnProviderRefreshProgress(object sender, GenericEventArgs<Tuple<BaseItem, double>> e)
|
|
|
{
|
|
|
var item = e.Argument.Item1;
|
|
|
|
|
@@ -122,9 +115,11 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
|
|
|
foreach (var collectionFolder in collectionFolders)
|
|
|
{
|
|
|
- var collectionFolderDict = new Dictionary<string, string>();
|
|
|
- collectionFolderDict["ItemId"] = collectionFolder.Id.ToString("N", CultureInfo.InvariantCulture);
|
|
|
- collectionFolderDict["Progress"] = (collectionFolder.GetRefreshProgress() ?? 0).ToString(CultureInfo.InvariantCulture);
|
|
|
+ var collectionFolderDict = new Dictionary<string, string>
|
|
|
+ {
|
|
|
+ ["ItemId"] = collectionFolder.Id.ToString("N", CultureInfo.InvariantCulture),
|
|
|
+ ["Progress"] = (collectionFolder.GetRefreshProgress() ?? 0).ToString(CultureInfo.InvariantCulture)
|
|
|
+ };
|
|
|
|
|
|
try
|
|
|
{
|
|
@@ -136,21 +131,19 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void _providerManager_RefreshStarted(object sender, GenericEventArgs<BaseItem> e)
|
|
|
+ private void OnProviderRefreshStarted(object sender, GenericEventArgs<BaseItem> e)
|
|
|
{
|
|
|
- _providerManager_RefreshProgress(sender, new GenericEventArgs<Tuple<BaseItem, double>>(new Tuple<BaseItem, double>(e.Argument, 0)));
|
|
|
+ OnProviderRefreshProgress(sender, new GenericEventArgs<Tuple<BaseItem, double>>(new Tuple<BaseItem, double>(e.Argument, 0)));
|
|
|
}
|
|
|
|
|
|
- private void _providerManager_RefreshCompleted(object sender, GenericEventArgs<BaseItem> e)
|
|
|
+ private void OnProviderRefreshCompleted(object sender, GenericEventArgs<BaseItem> e)
|
|
|
{
|
|
|
- _providerManager_RefreshProgress(sender, new GenericEventArgs<Tuple<BaseItem, double>>(new Tuple<BaseItem, double>(e.Argument, 100)));
|
|
|
+ OnProviderRefreshProgress(sender, new GenericEventArgs<Tuple<BaseItem, double>>(new Tuple<BaseItem, double>(e.Argument, 100)));
|
|
|
}
|
|
|
|
|
|
private static bool EnableRefreshMessage(BaseItem item)
|
|
|
{
|
|
|
- var folder = item as Folder;
|
|
|
-
|
|
|
- if (folder == null)
|
|
|
+ if (!(item is Folder folder))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
@@ -183,7 +176,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
/// </summary>
|
|
|
/// <param name="sender">The source of the event.</param>
|
|
|
/// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param>
|
|
|
- void libraryManager_ItemAdded(object sender, ItemChangeEventArgs e)
|
|
|
+ void OnLibraryItemAdded(object sender, ItemChangeEventArgs e)
|
|
|
{
|
|
|
if (!FilterItem(e.Item))
|
|
|
{
|
|
@@ -205,8 +198,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite);
|
|
|
}
|
|
|
|
|
|
- var parent = e.Item.GetParent() as Folder;
|
|
|
- if (parent != null)
|
|
|
+ if (e.Item.GetParent() is Folder parent)
|
|
|
{
|
|
|
_foldersAddedTo.Add(parent);
|
|
|
}
|
|
@@ -220,7 +212,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
/// </summary>
|
|
|
/// <param name="sender">The source of the event.</param>
|
|
|
/// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param>
|
|
|
- void libraryManager_ItemUpdated(object sender, ItemChangeEventArgs e)
|
|
|
+ private void OnLibraryItemUpdated(object sender, ItemChangeEventArgs e)
|
|
|
{
|
|
|
if (!FilterItem(e.Item))
|
|
|
{
|
|
@@ -231,8 +223,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
{
|
|
|
if (LibraryUpdateTimer == null)
|
|
|
{
|
|
|
- LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration,
|
|
|
- Timeout.Infinite);
|
|
|
+ LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -248,7 +239,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
/// </summary>
|
|
|
/// <param name="sender">The source of the event.</param>
|
|
|
/// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param>
|
|
|
- void libraryManager_ItemRemoved(object sender, ItemChangeEventArgs e)
|
|
|
+ void OnLibraryItemRemoved(object sender, ItemChangeEventArgs e)
|
|
|
{
|
|
|
if (!FilterItem(e.Item))
|
|
|
{
|
|
@@ -259,16 +250,14 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
{
|
|
|
if (LibraryUpdateTimer == null)
|
|
|
{
|
|
|
- LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration,
|
|
|
- Timeout.Infinite);
|
|
|
+ LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite);
|
|
|
}
|
|
|
|
|
|
- var parent = e.Parent as Folder;
|
|
|
- if (parent != null)
|
|
|
+ if (e.Parent is Folder parent)
|
|
|
{
|
|
|
_foldersRemovedFrom.Add(parent);
|
|
|
}
|
|
@@ -486,13 +475,13 @@ namespace Emby.Server.Implementations.EntryPoints
|
|
|
LibraryUpdateTimer = null;
|
|
|
}
|
|
|
|
|
|
- _libraryManager.ItemAdded -= libraryManager_ItemAdded;
|
|
|
- _libraryManager.ItemUpdated -= libraryManager_ItemUpdated;
|
|
|
- _libraryManager.ItemRemoved -= libraryManager_ItemRemoved;
|
|
|
+ _libraryManager.ItemAdded -= OnLibraryItemAdded;
|
|
|
+ _libraryManager.ItemUpdated -= OnLibraryItemUpdated;
|
|
|
+ _libraryManager.ItemRemoved -= OnLibraryItemRemoved;
|
|
|
|
|
|
- _providerManager.RefreshCompleted -= _providerManager_RefreshCompleted;
|
|
|
- _providerManager.RefreshStarted -= _providerManager_RefreshStarted;
|
|
|
- _providerManager.RefreshProgress -= _providerManager_RefreshProgress;
|
|
|
+ _providerManager.RefreshCompleted -= OnProviderRefreshCompleted;
|
|
|
+ _providerManager.RefreshStarted -= OnProviderRefreshStarted;
|
|
|
+ _providerManager.RefreshProgress -= OnProviderRefreshProgress;
|
|
|
}
|
|
|
}
|
|
|
}
|