Added a flag to suppress mark all as read warning alert

This commit is contained in:
Phil Viso 2019-10-07 19:33:30 -05:00
parent 6f0c957731
commit 461c681a9d
5 changed files with 67 additions and 35 deletions

View File

@ -404,6 +404,7 @@
FF3ABF13232599810074C542 /* ArticleSorterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF3ABF09232599450074C542 /* ArticleSorterTests.swift */; };
FF3ABF1523259DDB0074C542 /* ArticleSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF3ABF1423259DDB0074C542 /* ArticleSorter.swift */; };
FF3ABF162325AF5D0074C542 /* ArticleSorter.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF3ABF1423259DDB0074C542 /* ArticleSorter.swift */; };
FFD43E412340F488009E5CA3 /* MarkArticlesReadAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD43E372340F320009E5CA3 /* MarkArticlesReadAlertController.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -1034,6 +1035,7 @@
DF999FF622B5AEFA0064B687 /* SafariView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariView.swift; sourceTree = "<group>"; };
FF3ABF09232599450074C542 /* ArticleSorterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleSorterTests.swift; sourceTree = "<group>"; };
FF3ABF1423259DDB0074C542 /* ArticleSorter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleSorter.swift; sourceTree = "<group>"; };
FFD43E372340F320009E5CA3 /* MarkArticlesReadAlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkArticlesReadAlertController.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -1278,6 +1280,7 @@
51C4525D226508F600C03939 /* MasterFeed */ = {
isa = PBXGroup;
children = (
FFD43E372340F320009E5CA3 /* MarkArticlesReadAlertController.swift */,
51C45264226508F600C03939 /* MasterFeedViewController.swift */,
51CC9B3D231720B2000E842F /* MasterFeedDataSource.swift */,
51C45260226508F600C03939 /* Cell */,
@ -2810,6 +2813,7 @@
51C4529F22650A1900C03939 /* AuthorAvatarDownloader.swift in Sources */,
519E743D22C663F900A78E47 /* SceneDelegate.swift in Sources */,
51CC9B3E231720B2000E842F /* MasterFeedDataSource.swift in Sources */,
FFD43E412340F488009E5CA3 /* MarkArticlesReadAlertController.swift in Sources */,
51C452A322650A1E00C03939 /* HTMLMetadataDownloader.swift in Sources */,
51C4528D2265095F00C03939 /* AddFolderViewController.swift in Sources */,
51C452782265091600C03939 /* MasterTimelineCellData.swift in Sources */,

View File

@ -0,0 +1,44 @@
//
// MarkArticlesReadAlertControllerr.swift
// NetNewsWire
//
// Created by Phil Viso on 9/29/19.
// Copyright © 2019 Ranchero Software. All rights reserved.
//
import Foundation
import UIKit
struct MarkArticlesReadAlertController {
static func allArticlesAlert(handler: @escaping (UIAlertAction) -> Void) -> UIAlertController {
let message = NSLocalizedString("Mark all articles in all accounts as read?",
comment: "Mark all articles")
return markAllReadAlert(message: message, handler: handler)
}
static func timelineArticlesAlert(handler: @escaping (UIAlertAction) -> Void) -> UIAlertController {
let message = NSLocalizedString("Mark all articles in this timeline as read?",
comment: "Mark all articles")
return markAllReadAlert(message: message, handler: handler)
}
// MARK: -
private static func markAllReadAlert(message: String,
handler: @escaping (UIAlertAction) -> Void) -> UIAlertController {
let title = NSLocalizedString("Mark All Read", comment: "Mark All Read")
let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel")
let markTitle = NSLocalizedString("Mark All Read", comment: "Mark All Read")
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: cancelTitle, style: .cancel)
let markAction = UIAlertAction(title: markTitle, style: .default, handler: handler)
alertController.addAction(cancelAction)
alertController.addAction(markAction)
return alertController
}
}

View File

@ -344,24 +344,15 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner {
}
@IBAction func markAllAsRead(_ sender: Any) {
let title = NSLocalizedString("Mark All Read", comment: "Mark All Read")
let message = NSLocalizedString("Mark all articles in all accounts as read?", comment: "Mark all articles")
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel")
let cancelAction = UIAlertAction(title: cancelTitle, style: .cancel)
alertController.addAction(cancelAction)
let markTitle = NSLocalizedString("Mark All Read", comment: "Mark All Read")
let markAction = UIAlertAction(title: markTitle, style: .default) { [weak self] (action) in
if coordinator.shouldDisplayMarkAllAsReadUndoTip {
let alertController = MarkArticlesReadAlertController.allArticlesAlert { [weak self] _ in
self?.coordinator.markAllAsRead()
}
alertController.addAction(markAction)
present(alertController, animated: true)
} else {
coordinator.markAllAsRead()
}
}
@IBAction func add(_ sender: UIBarButtonItem) {

View File

@ -89,24 +89,15 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
// MARK: Actions
@IBAction func markAllAsRead(_ sender: Any) {
let title = NSLocalizedString("Mark All Read", comment: "Mark All Read")
let message = NSLocalizedString("Mark all articles in this timeline as read?", comment: "Mark all articles")
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel")
let cancelAction = UIAlertAction(title: cancelTitle, style: .cancel)
alertController.addAction(cancelAction)
let markTitle = NSLocalizedString("Mark All Read", comment: "Mark All Read")
let markAction = UIAlertAction(title: markTitle, style: .default) { [weak self] (action) in
if coordinator.shouldDisplayMarkAllAsReadUndoTip {
let alertController = MarkArticlesReadAlertController.timelineArticlesAlert { [weak self] _ in
self?.coordinator.markAllAsReadInTimeline()
}
alertController.addAction(markAction)
present(alertController, animated: true)
} else {
coordinator.markAllAsReadInTimeline()
}
}
@IBAction func firstUnread(_ sender: Any) {

View File

@ -83,6 +83,8 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
}
}
private(set) var shouldDisplayMarkAllAsReadUndoTip = true
private let treeControllerDelegate = FeedTreeControllerDelegate()
private lazy var treeController: TreeController = {
return TreeController(delegate: treeControllerDelegate)