aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-03 00:10:11 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-03 00:10:11 -0400
commit6481688d2acc23b789dab6e8ad04a96e48c46064 (patch)
treeddc3fcb30fcc9187563e9cb297e9ae938f0581c0 /MediaBrowser.Server.Implementations/Library/LibraryManager.cs
parentb79840e20f068f087d845e4abf1e817d211a1783 (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.cs89
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);
}