Example #1
0
 public MessageBoxNotice(NoticeBase b)
 {
     Enabled = b.Enabled;
     Title   = b.Title;
     Content = b.Content;
     Trigger = b.Trigger;
 }
Example #2
0
 public NotificationNotice(NoticeBase b)
 {
     Title   = b.Title;
     Content = b.Content;
     Trigger = b.Trigger;
 }
Example #3
0
        private static void Check()
        {
            try
            {
                using var c = MiscUtils.GetDefaultWebClient();
                var sMsg = c.DownloadString(new Uri(Url));
                var jMsg = JObject.Parse(sMsg);

                var newNotices = new List <NoticeBase>();

                var jNotices = jMsg["notices"];
                if (jNotices == null)
                {
                    return;
                }
                foreach (var jNotice in jNotices)
                {
                    var jType = jNotice["Type"];
                    if (jType == null)
                    {
                        continue;
                    }
                    var type = jType.Value <string>();

                    var jDetails = jNotice["Details"];
                    if (jDetails == null)
                    {
                        continue;
                    }

                    // todo: maybe use a factory
                    var jEnabled = jNotice[nameof(NoticeBase.Enabled)];
                    var jTrigger = jNotice[nameof(NoticeBase.Trigger)];
                    var jTitle   = jDetails[nameof(NoticeBase.Title)];
                    var jContent = jDetails[nameof(NoticeBase.Content)];

                    if (jEnabled == null || jTrigger == null || jTitle == null || jContent == null)
                    {
                        continue;
                    }
                    var notice = new NoticeBase
                    {
                        Enabled = jEnabled.Value <bool>(),
                        Trigger = (NoticeTrigger)jTrigger.Value <int>(),
                        Title   = jTitle.Value <string>(),
                        Content = jContent.Value <string>()
                    };

                    var duration     = jDetails[nameof(NotificationNotice.Duration)]?.Value <int>() ?? 0;
                    var intNotifType = jDetails[nameof(NotificationNotice.NotificationType)]?.Value <int>() ?? 0;
                    var notifType    = (NotificationType)intNotifType;

                    notice = type switch
                    {
                        nameof(NotificationNotice) => new NotificationNotice(notice)
                        {
                            Duration         = duration,
                            NotificationType = notifType
                        },
                        nameof(MessageBoxNotice) => new MessageBoxNotice(notice),
                        _ => notice
                    };

                    newNotices.Add(notice);
                }

                _notices = _notices.Where(existing => newNotices.All(n => n.Content != existing.Content)).ToList();

                foreach (var newNotice in newNotices)
                {
                    _notices.Add(newNotice);
                }
            }
            catch (Exception e)
            {
                Log.F($"Failed to check for messages. {e}");
            }
        }