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(); } }
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(); } }