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.ServerApplication/EntryPoints/WebSocketEvents.cs | |
| parent | b79840e20f068f087d845e4abf1e817d211a1783 (diff) | |
fixes #223 - New Content Localhost Popups Repeat 'Old' 'New Content' on Media Changes
Diffstat (limited to 'MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs')
| -rw-r--r-- | MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs | 95 |
1 files changed, 83 insertions, 12 deletions
diff --git a/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs b/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs index a6d505d19..e80c5cc1c 100644 --- a/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs +++ b/MediaBrowser.ServerApplication/EntryPoints/WebSocketEvents.cs @@ -101,10 +101,12 @@ namespace MediaBrowser.ServerApplication.EntryPoints _userManager.UserDeleted += userManager_UserDeleted; _userManager.UserUpdated += userManager_UserUpdated; - _libraryManager.LibraryChanged += libraryManager_LibraryChanged; - _appHost.HasPendingRestartChanged += kernel_HasPendingRestartChanged; + _libraryManager.ItemAdded += libraryManager_ItemAdded; + _libraryManager.ItemUpdated += libraryManager_ItemUpdated; + _libraryManager.ItemRemoved += libraryManager_ItemRemoved; + _installationManager.PluginUninstalled += InstallationManager_PluginUninstalled; _installationManager.PackageInstalling += installationManager_PackageInstalling; _installationManager.PackageInstallationCancelled += installationManager_PackageInstallationCancelled; @@ -122,7 +124,7 @@ namespace MediaBrowser.ServerApplication.EntryPoints void _taskManager_TaskExecuting(object sender, EventArgs e) { - var task = (IScheduledTask) sender; + var task = (IScheduledTask)sender; _serverManager.SendWebSocketMessage("ScheduledTaskStarted", task.Name); } @@ -167,11 +169,77 @@ namespace MediaBrowser.ServerApplication.EntryPoints } /// <summary> - /// Handles the LibraryChanged event of the libraryManager control. + /// Handles the ItemAdded event of the libraryManager control. + /// </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) + { + lock (_libraryChangedSyncLock) + { + if (LibraryUpdateInfo == null) + { + LibraryUpdateInfo = new LibraryUpdateInfo(); + } + + if (LibraryUpdateTimer == null) + { + LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, + Timeout.Infinite); + } + else + { + LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite); + } + + if (e.Item.Parent != null) + { + LibraryUpdateInfo.Folders.Add(e.Item.Parent.Id); + } + + LibraryUpdateInfo.ItemsAdded.Add(e.Item.Id); + } + } + + /// <summary> + /// Handles the ItemUpdated event of the libraryManager control. + /// </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) + { + lock (_libraryChangedSyncLock) + { + if (LibraryUpdateInfo == null) + { + LibraryUpdateInfo = new LibraryUpdateInfo(); + } + + if (LibraryUpdateTimer == null) + { + LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, + Timeout.Infinite); + } + else + { + LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite); + } + + if (e.Item.Parent != null) + { + LibraryUpdateInfo.Folders.Add(e.Item.Parent.Id); + } + + LibraryUpdateInfo.ItemsUpdated.Add(e.Item.Id); + } + } + + /// <summary> + /// Handles the ItemRemoved event of the libraryManager control. /// </summary> /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="ChildrenChangedEventArgs" /> instance containing the event data.</param> - void libraryManager_LibraryChanged(object sender, ChildrenChangedEventArgs e) + /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> + void libraryManager_ItemRemoved(object sender, ItemChangeEventArgs e) { lock (_libraryChangedSyncLock) { @@ -190,11 +258,12 @@ namespace MediaBrowser.ServerApplication.EntryPoints LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite); } - LibraryUpdateInfo.Folders.Add(e.Folder.Id); + if (e.Item.Parent != null) + { + LibraryUpdateInfo.Folders.Add(e.Item.Parent.Id); + } - LibraryUpdateInfo.ItemsAdded.AddRange(e.ItemsAdded.Select(i => i.Id)); - LibraryUpdateInfo.ItemsUpdated.AddRange(e.ItemsUpdated.Select(i => i.Id)); - LibraryUpdateInfo.ItemsRemoved.AddRange(e.ItemsRemoved.Select(i => i.Id)); + LibraryUpdateInfo.ItemsRemoved.Add(e.Item.Id); } } @@ -281,12 +350,14 @@ namespace MediaBrowser.ServerApplication.EntryPoints LibraryUpdateTimer.Dispose(); LibraryUpdateTimer = null; } + + _libraryManager.ItemAdded -= libraryManager_ItemAdded; + _libraryManager.ItemUpdated -= libraryManager_ItemUpdated; + _libraryManager.ItemRemoved -= libraryManager_ItemRemoved; _userManager.UserDeleted -= userManager_UserDeleted; _userManager.UserUpdated -= userManager_UserUpdated; - _libraryManager.LibraryChanged -= libraryManager_LibraryChanged; - _installationManager.PluginUninstalled -= InstallationManager_PluginUninstalled; _installationManager.PackageInstalling -= installationManager_PackageInstalling; _installationManager.PackageInstallationCancelled -= installationManager_PackageInstallationCancelled; |
