| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | using MediaBrowser.Common.Net;using MediaBrowser.Controller.Notifications;using MediaBrowser.Controller.Plugins;using System.Linq;namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications{    /// <summary>    /// Notifies clients anytime a notification is added or udpated    /// </summary>    public class WebSocketNotifier : IServerEntryPoint    {        private readonly INotificationsRepository _notificationsRepo;        private readonly IServerManager _serverManager;        public WebSocketNotifier(INotificationsRepository notificationsRepo, IServerManager serverManager)        {            _notificationsRepo = notificationsRepo;            _serverManager = serverManager;        }        public void Run()        {            _notificationsRepo.NotificationAdded += _notificationsRepo_NotificationAdded;            _notificationsRepo.NotificationsMarkedRead += _notificationsRepo_NotificationsMarkedRead;        }        void _notificationsRepo_NotificationsMarkedRead(object sender, NotificationReadEventArgs e)        {            var list = e.IdList.ToList();            list.Add(e.UserId);            list.Add(e.IsRead.ToString().ToLower());            var msg = string.Join("|", list.ToArray());            _serverManager.SendWebSocketMessage("NotificationsMarkedRead", msg);        }        void _notificationsRepo_NotificationAdded(object sender, NotificationUpdateEventArgs e)        {            var msg = e.Notification.UserId + "|" + e.Notification.Id;            _serverManager.SendWebSocketMessage("NotificationAdded", msg);        }        public void Dispose()        {            _notificationsRepo.NotificationAdded -= _notificationsRepo_NotificationAdded;        }    }}
 |