diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index 83b39d602..7a89c6297 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -138,9 +138,6 @@ - - - diff --git a/iOS/MasterTimeline/MarkAsReadAlertController.swift b/iOS/MasterTimeline/MarkAsReadAlertController.swift index 7bc0b9b55..5bbce1406 100644 --- a/iOS/MasterTimeline/MarkAsReadAlertController.swift +++ b/iOS/MasterTimeline/MarkAsReadAlertController.swift @@ -47,8 +47,8 @@ struct MarkAsReadAlertController { let title = NSLocalizedString("Mark As Read", comment: "Mark As Read") - let message = NSLocalizedString("You can turn this confirmation off in settings.", - comment: "You can turn this confirmation off in settings.") + let message = NSLocalizedString("You can turn this confirmation off in Settings.", + comment: "You can turn this confirmation off in Settings.") let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel") let settingsTitle = NSLocalizedString("Open Settings", comment: "Open Settings") diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index eb264e520..d14d26d1c 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -19,7 +19,15 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner private var refreshProgressView: RefreshProgressView? - @IBOutlet weak var markAllAsReadButton: UIBarButtonItem! + @IBOutlet weak var markAllAsReadButton: UIBarButtonItem! { + didSet { + if #available(iOS 14, *) { + markAllAsReadButton.primaryAction = nil + } else { + markAllAsReadButton.action = #selector(MasterTimelineViewController.markAllAsRead(_:)) + } + } + } private var filterButton: UIBarButtonItem! private var firstUnreadButton: UIBarButtonItem! @@ -655,6 +663,25 @@ private extension MasterTimelineViewController { setToolbarItems(items, animated: false) } } + + if #available(iOS 14, *) { + let title = NSLocalizedString("Mark All as Read", comment: "Mark All as Read") + var markAsReadAction: UIAction! + + if AppDefaults.shared.confirmMarkAllAsRead { + markAsReadAction = UIAction(title: title, image: AppAssets.markAllAsReadImage, discoverabilityTitle: "in \(self.title!)") { [weak self] action in + self?.coordinator.markAllAsReadInTimeline() + } + let settingsAction = UIAction(title: NSLocalizedString("Settings", comment: "Settings"), image: UIImage(systemName: "gear")!, discoverabilityTitle: NSLocalizedString("You can turn this confirmation off in Settings.", comment: "You can turn this confirmation off in Settings.")) { [weak self] action in + self?.coordinator.showSettings(scrollToArticlesSection: true) + } + + markAllAsReadButton.menu = UIMenu(title: NSLocalizedString(title, comment: title), image: nil, identifier: nil, children: [settingsAction, markAsReadAction]) + } else { + markAllAsReadButton.action = #selector(MasterTimelineViewController.markAllAsRead(_:)) + } + } + } func updateTitleUnreadCount() {