示例#1
0
            public override void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, Action completionHandler)
            {
                try
                {
                    if (response.IsDefaultAction)
                    {
                        string identifier = response.Notification.Request.Identifier;

                        if (IOSRemindersExtension.TryParseAccount(identifier, out Guid localAccountId))
                        {
                            if (IOSRemindersExtension.TryParseDayBeforeIdentifier(identifier, out DateTime dateOfArtificalToday))
                            {
                                TelemetryExtension.Current?.TrackEvent($"Launch_FromToast_DayBefore");

                                DateTime dateToShow = dateOfArtificalToday.AddDays(1);

                                // Show day view
                                HandleLaunch((viewModel) =>
                                {
                                    viewModel.HandleViewDayActivation(localAccountId, dateToShow);
                                    return(Task.FromResult(true));
                                });
                            }

                            else if (IOSRemindersExtension.TryParsingDayOfTaskIdentifier(identifier, out Guid taskIdentifier))
                            {
                                TelemetryExtension.Current?.TrackEvent($"Launch_FromToast_HomeworkExam");

                                // Show task
                                HandleLaunch(async(viewModel) =>
                                {
                                    await viewModel.HandleViewHomeworkActivation(localAccountId, taskIdentifier);
                                });
                            }

                            else if (IOSRemindersExtension.TryParsingDayOfEventIdentifier(identifier, out Guid eventIdentifier))
                            {
                                TelemetryExtension.Current?.TrackEvent($"Launch_FromToast_HomeworkExam");

                                // Show task
                                HandleLaunch(async(viewModel) =>
                                {
                                    await viewModel.HandleViewExamActivation(localAccountId, eventIdentifier);
                                });
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    TelemetryExtension.Current?.TrackException(ex);
                }
                finally
                {
                    // Inform caller it has been handled
                    completionHandler();
                }
            }
示例#2
0
            public override void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, Action completionHandler)
            {
                try
                {
                    if (response.IsDefaultAction)
                    {
                        string identifier = response.Notification.Request.Identifier;

                        if (IOSRemindersExtension.TryParseAccount(identifier, out Guid localAccountId))
                        {
                            if (IOSRemindersExtension.TryParseDayBeforeIdentifier(identifier, out DateTime dateOfArtificalToday))
                            {
                                TelemetryExtension.Current?.TrackEvent($"Launch_FromToast_DayBefore");

                                DateTime dateToShow = dateOfArtificalToday.AddDays(1);

                                // Show day view
                                if (AppDelegate._hasActivatedWindow)
                                {
                                    _appDelegate.HandleLaunch(async(viewModel) =>
                                    {
                                        await viewModel.HandleViewDayActivation(localAccountId, dateToShow);
                                    });
                                }
                                else
                                {
                                    // We just set the properties, weird stuff seemed to happen if we tried to use the unified activation methods
                                    CalendarViewModel.SetInitialDisplayState(CalendarViewModel.DisplayStates.Day, dateToShow);
                                    NavigationManager.MainMenuSelection = NavigationManager.MainMenuSelections.Calendar;
                                }
                            }

                            else if (IOSRemindersExtension.TryParsingDayOfTaskIdentifier(identifier, out Guid taskIdentifier))
                            {
                                TelemetryExtension.Current?.TrackEvent($"Launch_FromToast_Task");

                                // Show task
                                _appDelegate.HandleLaunch(async(viewModel) =>
                                {
                                    await viewModel.HandleViewTaskActivation(localAccountId, taskIdentifier);
                                });
                            }

                            else if (IOSRemindersExtension.TryParsingDayOfEventIdentifier(identifier, out Guid eventIdentifier))
                            {
                                TelemetryExtension.Current?.TrackEvent($"Launch_FromToast_Event");

                                // Show task
                                _appDelegate.HandleLaunch(async(viewModel) =>
                                {
                                    await viewModel.HandleViewEventActivation(localAccountId, eventIdentifier);
                                });
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    TelemetryExtension.Current?.TrackException(ex);
                }
                finally
                {
                    // Inform caller it has been handled
                    completionHandler();
                }
            }