@ -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 + = OnLibrary ItemAdded;
_libraryManager . ItemUpdated + = OnLibrary ItemUpdated;
_libraryManager . ItemRemoved + = OnLibrary ItemRemoved;
_providerManager . RefreshCompleted + = _providerManager_ RefreshCompleted;
_providerManager . RefreshStarted + = _providerManager_ RefreshStarted;
_providerManager . RefreshProgress + = _providerManager_ RefreshProgress;
_providerManager . RefreshCompleted + = OnProvider RefreshCompleted;
_providerManager . RefreshStarted + = OnProvider RefreshStarted;
_providerManager . RefreshProgress + = OnProvider RefreshProgress;
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 OnProvider RefreshStarted( object sender , GenericEventArgs < BaseItem > e )
{
_providerManager_ RefreshProgress( sender , new GenericEventArgs < Tuple < BaseItem , double > > ( new Tuple < BaseItem , double > ( e . Argument , 0 ) ) ) ;
OnProvider RefreshProgress( sender , new GenericEventArgs < Tuple < BaseItem , double > > ( new Tuple < BaseItem , double > ( e . Argument , 0 ) ) ) ;
}
private void _providerManager_ RefreshCompleted( object sender , GenericEventArgs < BaseItem > e )
private void OnProvider RefreshCompleted( object sender , GenericEventArgs < BaseItem > e )
{
_providerManager_ RefreshProgress( sender , new GenericEventArgs < Tuple < BaseItem , double > > ( new Tuple < BaseItem , double > ( e . Argument , 100 ) ) ) ;
OnProvider RefreshProgress( 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 OnLibrary ItemAdded( 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 OnLibrary ItemUpdated( 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 OnLibrary ItemRemoved( 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 - = OnLibrary ItemAdded;
_libraryManager . ItemUpdated - = OnLibrary ItemUpdated;
_libraryManager . ItemRemoved - = OnLibrary ItemRemoved;
_providerManager . RefreshCompleted - = _providerManager_ RefreshCompleted;
_providerManager . RefreshStarted - = _providerManager_ RefreshStarted;
_providerManager . RefreshProgress - = _providerManager_ RefreshProgress;
_providerManager . RefreshCompleted - = OnProvider RefreshCompleted;
_providerManager . RefreshStarted - = OnProvider RefreshStarted;
_providerManager . RefreshProgress - = OnProvider RefreshProgress;
}
}
}