diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-03 00:10:11 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-05-03 00:10:11 -0400 |
| commit | 6481688d2acc23b789dab6e8ad04a96e48c46064 (patch) | |
| tree | ddc3fcb30fcc9187563e9cb297e9ae938f0581c0 /MediaBrowser.Server.Implementations/Library/LibraryManager.cs | |
| parent | b79840e20f068f087d845e4abf1e817d211a1783 (diff) | |
fixes #223 - New Content Localhost Popups Repeat 'Old' 'New Content' on Media Changes
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/LibraryManager.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/LibraryManager.cs | 89 |
1 files changed, 57 insertions, 32 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index b78aa88f3..045b49aef 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -69,24 +69,20 @@ namespace MediaBrowser.Server.Implementations.Library /// <value>The item repository.</value> public IItemRepository ItemRepository { get; set; } - #region LibraryChanged Event /// <summary> - /// Fires whenever any validation routine adds or removes items. The added and removed items are properties of the args. - /// *** Will fire asynchronously. *** + /// Occurs when [item added]. /// </summary> - public event EventHandler<ChildrenChangedEventArgs> LibraryChanged; + public event EventHandler<ItemChangeEventArgs> ItemAdded; /// <summary> - /// Reports the library changed. + /// Occurs when [item updated]. /// </summary> - /// <param name="args">The <see cref="ChildrenChangedEventArgs" /> instance containing the event data.</param> - public void ReportLibraryChanged(ChildrenChangedEventArgs args) - { - UpdateLibraryCache(args); + public event EventHandler<ItemChangeEventArgs> ItemUpdated; - EventHelper.FireEventIfNotNull(LibraryChanged, this, args, _logger); - } - #endregion + /// <summary> + /// Occurs when [item removed]. + /// </summary> + public event EventHandler<ItemChangeEventArgs> ItemRemoved; /// <summary> /// The _logger @@ -303,25 +299,6 @@ namespace MediaBrowser.Server.Implementations.Library } /// <summary> - /// Updates the library cache. - /// </summary> - /// <param name="args">The <see cref="ChildrenChangedEventArgs"/> instance containing the event data.</param> - private void UpdateLibraryCache(ChildrenChangedEventArgs args) - { - UpdateItemInLibraryCache(args.Folder); - - foreach (var item in args.ItemsAdded) - { - UpdateItemInLibraryCache(item); - } - - foreach (var item in args.ItemsUpdated) - { - UpdateItemInLibraryCache(item); - } - } - - /// <summary> /// Updates the item in library cache. /// </summary> /// <param name="item">The item.</param> @@ -1070,12 +1047,60 @@ namespace MediaBrowser.Server.Implementations.Library } /// <summary> + /// Creates the item. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + public async Task CreateItem(BaseItem item, CancellationToken cancellationToken) + { + await SaveItem(item, cancellationToken).ConfigureAwait(false); + + UpdateItemInLibraryCache(item); + + if (ItemAdded != null) + { + ItemAdded(this, new ItemChangeEventArgs { Item = item }); + } + } + + /// <summary> + /// Updates the item. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>Task.</returns> + public async Task UpdateItem(BaseItem item, CancellationToken cancellationToken) + { + await SaveItem(item, cancellationToken).ConfigureAwait(false); + + UpdateItemInLibraryCache(item); + + if (ItemUpdated != null) + { + ItemUpdated(this, new ItemChangeEventArgs { Item = item }); + } + } + + /// <summary> + /// Reports the item removed. + /// </summary> + /// <param name="item">The item.</param> + public void ReportItemRemoved(BaseItem item) + { + if (ItemRemoved != null) + { + ItemRemoved(this, new ItemChangeEventArgs { Item = item }); + } + } + + /// <summary> /// Saves the item. /// </summary> /// <param name="item">The item.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> - public Task SaveItem(BaseItem item, CancellationToken cancellationToken) + private Task SaveItem(BaseItem item, CancellationToken cancellationToken) { return ItemRepository.SaveItem(item, cancellationToken); } |
