diff --git a/NzbDrone.Core/Providers/NotificationProvider.cs b/NzbDrone.Core/Providers/NotificationProvider.cs index 00ee08ada..85b32f22d 100644 --- a/NzbDrone.Core/Providers/NotificationProvider.cs +++ b/NzbDrone.Core/Providers/NotificationProvider.cs @@ -24,28 +24,40 @@ namespace NzbDrone.Core.Providers { get { + lock (_lock) + { + var activeNotification = + _progressNotification.Values.Where(p => p.Status == ProgressNotificationStatus.InProgress). + ToList(); - var activeNotification = _progressNotification.Values.Where(p => p.Status == ProgressNotificationStatus.InProgress).ToList(); + if (activeNotification.Count == 0) + { + //Get notifications that were recently done + activeNotification = + _progressNotification.Values.Where(p => p.CompletedTime >= DateTime.Now.AddSeconds(-3)). + OrderByDescending(c => c.CompletedTime).ToList(); - if (activeNotification.Count == 0) - { - //Get notifications that were recently done - activeNotification = _progressNotification.Values.Where(p => p.CompletedTime >= DateTime.Now.AddSeconds(-3)).OrderByDescending(c => c.CompletedTime).ToList(); + } + return activeNotification.ToList(); } - - return activeNotification.ToList(); } } public virtual void Register(ProgressNotification notification) { - _progressNotification.Add(notification.Id, notification); + lock (_lock) + { + _progressNotification.Add(notification.Id, notification); + } } public virtual void Register(BasicNotification notification) { - _basicNotifications.Add(notification.Id, notification); + lock (_lock) + { + _basicNotifications.Add(notification.Id, notification); + } } public virtual void Dismiss(Guid notificationId) diff --git a/NzbDrone.Web/Controllers/NotificationController.cs b/NzbDrone.Web/Controllers/NotificationController.cs index 186b34ee8..c1796cac0 100644 --- a/NzbDrone.Web/Controllers/NotificationController.cs +++ b/NzbDrone.Web/Controllers/NotificationController.cs @@ -52,13 +52,11 @@ namespace NzbDrone.Web.Controllers [HttpGet] public JsonResult Comet(string message) { - var requestTimer = Stopwatch.StartNew(); - MiniProfiler.Stop(true); var currentMessage = GetCurrentMessage(); - while (message == currentMessage && requestTimer.Elapsed.TotalSeconds < 10) + while (message == currentMessage) { Thread.Sleep(250); currentMessage = GetCurrentMessage(); diff --git a/NzbDrone.Web/Scripts/Notification.js b/NzbDrone.Web/Scripts/Notification.js index 77c88262e..d564c1c4b 100644 --- a/NzbDrone.Web/Scripts/Notification.js +++ b/NzbDrone.Web/Scripts/Notification.js @@ -41,9 +41,11 @@ } function closeMsg() { - //hide the message - $('#msgBox').hide("slide", { direction: "right" }, speed); - isShown = false; + //hide the message + if (isShown) { + $('#msgBox').hide("slide", { direction: "right" }, speed); + isShown = false; + } } });