Cleaned up progress notification.

This commit is contained in:
kay.one 2011-11-20 20:43:16 -08:00
commit 0a70c836df
5 changed files with 86 additions and 35 deletions

View file

@ -7,42 +7,21 @@ namespace NzbDrone.Core.Providers
{
public class NotificationProvider
{
private static ProgressNotification _currentNotification;
private static readonly Object _lock = new object();
private static readonly Dictionary<Guid, ProgressNotification> _progressNotification =
new Dictionary<Guid, ProgressNotification>();
public virtual List<ProgressNotification> ProgressNotifications
public virtual ProgressNotification GetCurrent()
{
get
if (_currentNotification == null || _currentNotification.CompletedTime < DateTime.Now.AddSeconds(-3))
{
lock (_lock)
{
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();
}
return activeNotification.ToList();
}
return null;
}
return _currentNotification;
}
public virtual void Register(ProgressNotification notification)
{
lock (_lock)
{
_progressNotification.Add(notification.Id, notification);
}
_currentNotification = notification;
}
}
}