diff --git a/Mac/Inspector/WebFeedInspectorViewController.swift b/Mac/Inspector/WebFeedInspectorViewController.swift index 04dccc4b4..711ac1472 100644 --- a/Mac/Inspector/WebFeedInspectorViewController.swift +++ b/Mac/Inspector/WebFeedInspectorViewController.swift @@ -57,36 +57,26 @@ final class WebFeedInspectorViewController: NSViewController, Inspector { // MARK: Actions @IBAction func isNotifyAboutNewArticlesChanged(_ sender: Any) { guard let settings = userNotificationSettings else { - // Something went wront fetching the user notification settings, - // so toggle the checkbox back to its original state and return. isNotifyAboutNewArticlesCheckBox.setNextState() return } if settings.authorizationStatus == .denied { - // Notifications are not authorized, so toggle the checkbox back - // to its original state... isNotifyAboutNewArticlesCheckBox.setNextState() - // ...then alert the user to the issue... showNotificationsDeniedError() } else if settings.authorizationStatus == .authorized { - // Notifications are authorized, so set the feed's isNotifyAboutNewArticles - // property to match the state of isNotifyAboutNewArticlesCheckbox. feed?.isNotifyAboutNewArticles = (isNotifyAboutNewArticlesCheckBox?.state ?? .off) == .on ? true : false } else { - // We're not sure what the status may be but we've /probably/ not requested - // permission to send notifications, so do that: UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .sound, .alert]) { (granted, error) in self.updateNotificationSettings() if granted { - // We've been given permission, so set the feed's isNotifyAboutNewArticles - // property to match the state of isNotifyAboutNewArticlesCheckbox and then - // register for remote notifications. - self.feed?.isNotifyAboutNewArticles = (self.isNotifyAboutNewArticlesCheckBox?.state ?? .off) == .on ? true : false - NSApplication.shared.registerForRemoteNotifications() + DispatchQueue.main.async { + self.feed?.isNotifyAboutNewArticles = (self.isNotifyAboutNewArticlesCheckBox?.state ?? .off) == .on ? true : false + NSApplication.shared.registerForRemoteNotifications() + } } else { - // We weren't given permission, so toggle the checkbox back to its - // original state. - self.isNotifyAboutNewArticlesCheckBox.setNextState() + DispatchQueue.main.async { + self.isNotifyAboutNewArticlesCheckBox.setNextState() + } } } }