@ -1,7 +1,5 @@
#nullable disable
#pragma warning disable CS1591
using System ;
using System.Collections.Concurrent ;
using System.Collections.Generic ;
@ -25,6 +23,9 @@ using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.EntryPoints ;
/// <summary>
/// A <see cref="IServerEntryPoint"/> that notifies users when libraries are updated.
/// </summary>
public sealed class LibraryChangedNotifier : IServerEntryPoint
{
private readonly ILibraryManager _libraryManager ;
@ -42,6 +43,15 @@ public sealed class LibraryChangedNotifier : IServerEntryPoint
private readonly List < BaseItem > _itemsUpdated = new ( ) ;
private readonly ConcurrentDictionary < Guid , DateTime > _lastProgressMessageTimes = new ( ) ;
/// <summary>
/// Initializes a new instance of the <see cref="LibraryChangedNotifier"/> class.
/// </summary>
/// <param name="libraryManager">The <see cref="ILibraryManager"/>.</param>
/// <param name="configurationManager">The <see cref="IServerConfigurationManager"/>.</param>
/// <param name="sessionManager">The <see cref="ISessionManager"/>.</param>
/// <param name="userManager">The <see cref="IUserManager"/>.</param>
/// <param name="logger">The <see cref="ILogger"/>.</param>
/// <param name="providerManager">The <see cref="IProviderManager"/>.</param>
public LibraryChangedNotifier (
ILibraryManager libraryManager ,
IServerConfigurationManager configurationManager ,
@ -58,12 +68,9 @@ public sealed class LibraryChangedNotifier : IServerEntryPoint
_providerManager = providerManager ;
}
/// <summary>
/// Gets or sets the library update timer.
/// </summary>
/// <value>The library update timer.</value>
private Timer LibraryUpdateTimer { get ; set ; }
/// <inheritdoc />
public Task RunAsync ( )
{
_libraryManager . ItemAdded + = OnLibraryItemAdded ;
@ -184,10 +191,6 @@ public sealed class LibraryChangedNotifier : IServerEntryPoint
}
}
/// <summary>
/// Libraries the update timer callback.
/// </summary>
/// <param name="state">The state.</param>
private async void LibraryUpdateTimerCallback ( object state )
{
List < Folder > foldersAddedTo ;
@ -230,15 +233,6 @@ public sealed class LibraryChangedNotifier : IServerEntryPoint
await SendChangeNotifications ( itemsAdded , itemsUpdated , itemsRemoved , foldersAddedTo , foldersRemovedFrom , CancellationToken . None ) . ConfigureAwait ( false ) ;
}
/// <summary>
/// Sends the change notifications.
/// </summary>
/// <param name="itemsAdded">The items added.</param>
/// <param name="itemsUpdated">The items updated.</param>
/// <param name="itemsRemoved">The items removed.</param>
/// <param name="foldersAddedTo">The folders added to.</param>
/// <param name="foldersRemovedFrom">The folders removed from.</param>
/// <param name="cancellationToken">The cancellation token.</param>
private async Task SendChangeNotifications (
List < BaseItem > itemsAdded ,
List < BaseItem > itemsUpdated ,
@ -288,16 +282,6 @@ public sealed class LibraryChangedNotifier : IServerEntryPoint
}
}
/// <summary>
/// Gets the library update info.
/// </summary>
/// <param name="itemsAdded">The items added.</param>
/// <param name="itemsUpdated">The items updated.</param>
/// <param name="itemsRemoved">The items removed.</param>
/// <param name="foldersAddedTo">The folders added to.</param>
/// <param name="foldersRemovedFrom">The folders removed from.</param>
/// <param name="userId">The user id.</param>
/// <returns>LibraryUpdateInfo.</returns>
private LibraryUpdateInfo GetLibraryUpdateInfo (
List < BaseItem > itemsAdded ,
List < BaseItem > itemsUpdated ,
@ -379,14 +363,6 @@ public sealed class LibraryChangedNotifier : IServerEntryPoint
return list . Distinct ( StringComparer . Ordinal ) ;
}
/// <summary>
/// Translates the physical item to user library.
/// </summary>
/// <typeparam name="T">The type of item.</typeparam>
/// <param name="item">The item.</param>
/// <param name="user">The user.</param>
/// <param name="includeIfNotFound">if set to <c>true</c> [include if not found].</param>
/// <returns>IEnumerable{``0}.</returns>
private IEnumerable < T > TranslatePhysicalItemToUserLibrary < T > ( T item , User user , bool includeIfNotFound = false )
where T : BaseItem
{