private ToastContent BuildToast(MalNotification notification) { return new ToastContent() { Launch = ((notification.Type == MalNotificationsTypes.UserMentions && !notification.IsSupported) || notification.Type == MalNotificationsTypes.FriendRequest || notification.Type == MalNotificationsTypes.ClubMessages ? "OpenUrl;" : "") + notification.LaunchArgs, Scenario = ToastScenario.Default, Visual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { AppLogoOverride = new ToastGenericAppLogo {Source = Logo}, HeroImage = string.IsNullOrEmpty(notification.ImgUrl) ? null : new ToastGenericHeroImage {Source = notification.ImgUrl}, Children = { new AdaptiveText() { Text = notification.Header }, new AdaptiveText() { Text = notification.Content }, new AdaptiveText() { Text = notification.Date, HintStyle = AdaptiveTextStyle.Subtitle }, }, }, }, Actions = GetActions(notification) }; }
private ToastActionsCustom GetActions(MalNotification notification) { switch (notification.Type) { case MalNotificationsTypes.Generic: case MalNotificationsTypes.FriendRequestAcceptDeny: case MalNotificationsTypes.BlogComment: case MalNotificationsTypes.Payment: return new ToastActionsCustom(); case MalNotificationsTypes.FriendRequest: return new ToastActionsCustom { Buttons = { new ToastButton("Open website","OpenUrl;" + notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.ProfileComment: return new ToastActionsCustom { Buttons = { new ToastButton("Open conversation", notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.ForumQuoute: return new ToastActionsCustom { Buttons = { new ToastButton("Open topic", notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.UserMentions: return new ToastActionsCustom { Buttons = { new ToastButton("Open", (!notification.IsSupported ? "OpenUrl;" : "") + notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.WatchedTopics: return new ToastActionsCustom { Buttons = { new ToastButton("Open topic", notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.ClubMessages: return new ToastActionsCustom { Buttons = { new ToastButton("Open website", "OpenUrl;" + notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.NewRelatedAnime: return new ToastActionsCustom { Buttons = { new ToastButton("Open details", notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.NowAiring: return new ToastActionsCustom { Buttons = { new ToastButton("Open details", notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; case MalNotificationsTypes.Messages: return new ToastActionsCustom { Buttons = { new ToastButton("Open conversation", notification.LaunchArgs) { ActivationType = ToastActivationType.Foreground, }, new ToastButtonDismiss() } }; default: throw new ArgumentOutOfRangeException(); } }
private async void ScheduleToast(MalNotification notification) { _waitCount++; var toastContent = BuildToast(notification); await _toastSemaphore.WaitAsync(); ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toastContent.GetXml())); await Task.Delay(500); _toastSemaphore.Release(); _waitCount--; if(_waitCount == 0) Defferal?.Complete(); }