| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | #nullable disable#pragma warning disable CS1591using System;using Jellyfin.Data.Entities;using Jellyfin.Data.Enums;using Jellyfin.Extensions;namespace MediaBrowser.Model.Notifications{    public class NotificationOptions    {        public NotificationOptions()        {            Options = new[]            {                new NotificationOption(NotificationType.TaskFailed.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.ServerRestartRequired.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.ApplicationUpdateAvailable.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.ApplicationUpdateInstalled.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.PluginUpdateInstalled.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.PluginUninstalled.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.InstallationFailed.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.PluginInstalled.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.PluginError.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                },                new NotificationOption(NotificationType.UserLockedOut.ToString())                {                    Enabled = true,                    SendToUserMode = SendToUserType.Admins                }            };        }        public NotificationOption[] Options { get; set; }        public NotificationOption GetOptions(string type)        {            foreach (NotificationOption i in Options)            {                if (string.Equals(type, i.Type, StringComparison.OrdinalIgnoreCase))                {                    return i;                }            }            return null;        }        public bool IsEnabled(string type)        {            NotificationOption opt = GetOptions(type);            return opt is not null && opt.Enabled;        }        public bool IsServiceEnabled(string service, string notificationType)        {            NotificationOption opt = GetOptions(notificationType);            return opt is null                   || !opt.DisabledServices.Contains(service, StringComparison.OrdinalIgnoreCase);        }        public bool IsEnabledToMonitorUser(string type, Guid userId)        {            NotificationOption opt = GetOptions(type);            return opt is not null                   && opt.Enabled                   && !opt.DisabledMonitorUsers.Contains(userId.ToString("N"), StringComparison.OrdinalIgnoreCase);        }        public bool IsEnabledToSendToUser(string type, string userId, User user)        {            NotificationOption opt = GetOptions(type);            if (opt is not null && opt.Enabled)            {                if (opt.SendToUserMode == SendToUserType.All)                {                    return true;                }                if (opt.SendToUserMode == SendToUserType.Admins && user.HasPermission(PermissionKind.IsAdministrator))                {                    return true;                }                return opt.SendToUsers.Contains(userId, StringComparison.OrdinalIgnoreCase);            }            return false;        }    }}
 |