2011-07-02 01:56:58 -07:00
|
|
|
using System;
|
|
|
|
using System.Diagnostics;
|
|
|
|
using System.Threading;
|
|
|
|
using System.Web.Mvc;
|
2011-06-13 18:23:04 -07:00
|
|
|
using MvcMiniProfiler;
|
2010-10-07 20:35:04 -07:00
|
|
|
using NzbDrone.Core.Providers;
|
|
|
|
|
|
|
|
namespace NzbDrone.Web.Controllers
|
|
|
|
{
|
|
|
|
public class NotificationController : Controller
|
|
|
|
{
|
2011-04-08 16:48:47 -07:00
|
|
|
private readonly NotificationProvider _notifications;
|
2010-10-07 20:35:04 -07:00
|
|
|
//
|
|
|
|
// GET: /Notification/
|
|
|
|
|
2011-04-08 16:48:47 -07:00
|
|
|
public NotificationController(NotificationProvider notificationProvider)
|
2010-10-07 20:35:04 -07:00
|
|
|
{
|
|
|
|
_notifications = notificationProvider;
|
|
|
|
}
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
public JsonResult Index()
|
|
|
|
{
|
2010-10-17 23:06:16 -07:00
|
|
|
string message = string.Empty;
|
2011-05-12 21:46:26 -07:00
|
|
|
|
|
|
|
var basic = _notifications.BasicNotifications;
|
|
|
|
|
|
|
|
if (basic.Count != 0)
|
|
|
|
{
|
|
|
|
message = basic[0].Title;
|
|
|
|
|
|
|
|
if (basic[0].AutoDismiss)
|
|
|
|
_notifications.Dismiss(basic[0].Id);
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
2010-10-17 23:06:16 -07:00
|
|
|
{
|
2011-07-02 01:56:58 -07:00
|
|
|
if (_notifications.ProgressNotifications.Count != 0)
|
|
|
|
message = _notifications.ProgressNotifications[0].CurrentMessage;
|
2010-10-17 23:06:16 -07:00
|
|
|
}
|
|
|
|
|
2011-06-13 18:23:04 -07:00
|
|
|
|
|
|
|
if (MiniProfiler.Current.DurationMilliseconds < 100)
|
|
|
|
{
|
|
|
|
MiniProfiler.Stop(true);
|
|
|
|
}
|
|
|
|
|
2010-10-17 23:06:16 -07:00
|
|
|
return Json(message, JsonRequestBehavior.AllowGet);
|
2010-10-07 20:35:04 -07:00
|
|
|
}
|
2011-07-02 01:56:58 -07:00
|
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
public JsonResult Comet(string message)
|
|
|
|
{
|
|
|
|
MiniProfiler.Stop(true);
|
|
|
|
|
|
|
|
var currentMessage = GetCurrentMessage();
|
|
|
|
|
2011-07-02 10:41:10 -07:00
|
|
|
while (message == currentMessage)
|
2011-07-02 01:56:58 -07:00
|
|
|
{
|
|
|
|
Thread.Sleep(250);
|
|
|
|
currentMessage = GetCurrentMessage();
|
|
|
|
}
|
|
|
|
|
|
|
|
return Json(currentMessage, JsonRequestBehavior.AllowGet);
|
|
|
|
}
|
|
|
|
|
|
|
|
private string GetCurrentMessage()
|
|
|
|
{
|
|
|
|
if (_notifications.ProgressNotifications.Count != 0)
|
|
|
|
return _notifications.ProgressNotifications[0].CurrentMessage;
|
|
|
|
|
|
|
|
|
|
|
|
return string.Empty;
|
|
|
|
}
|
2010-10-07 20:35:04 -07:00
|
|
|
}
|
2011-04-09 19:44:01 -07:00
|
|
|
}
|