Removed usaged of UIApplication.present

This commit is contained in:
Maurice Parker 2019-06-27 14:21:07 -05:00
parent 95d4395416
commit 5f045706e4
9 changed files with 28 additions and 29 deletions

View File

@ -16,6 +16,7 @@ import Articles
import RSParser import RSParser
import ArticlesDatabase import ArticlesDatabase
import RSWeb import RSWeb
import os.log
public extension Notification.Name { public extension Notification.Name {
static let AccountRefreshDidBegin = Notification.Name(rawValue: "AccountRefreshDidBegin") static let AccountRefreshDidBegin = Notification.Name(rawValue: "AccountRefreshDidBegin")
@ -62,6 +63,8 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container,
return defaultName return defaultName
}() }()
var log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "account")
public var isDeleted = false public var isDeleted = false
public var account: Account? { public var account: Account? {
@ -917,11 +920,7 @@ private extension Account {
do { do {
opmlDocument = try RSOPMLParser.parseOPML(with: parserData) opmlDocument = try RSOPMLParser.parseOPML(with: parserData)
} catch { } catch {
#if os(macOS) os_log(.error, log: log, "OPML Import failed: %@.", error.localizedDescription)
NSApplication.shared.presentError(error)
#else
UIApplication.shared.presentError(error)
#endif
return return
} }
guard let parsedOPML = opmlDocument, let children = parsedOPML.children else { guard let parsedOPML = opmlDocument, let children = parsedOPML.children else {
@ -944,11 +943,7 @@ private extension Account {
try opmlDocumentString.write(to: url, atomically: true, encoding: .utf8) try opmlDocumentString.write(to: url, atomically: true, encoding: .utf8)
} }
catch let error as NSError { catch let error as NSError {
#if os(macOS) os_log(.error, log: log, "Save to disk failed: %@.", error.localizedDescription)
NSApplication.shared.presentError(error)
#else
UIApplication.shared.presentError(error)
#endif
} }
} }

View File

@ -330,7 +330,7 @@ protocol SidebarDelegate: class {
let nodesToDelete = treeController.normalizedSelectedNodes(nodes) let nodesToDelete = treeController.normalizedSelectedNodes(nodes)
guard let undoManager = undoManager, let deleteCommand = DeleteCommand(nodesToDelete: nodesToDelete, treeController: treeController, undoManager: undoManager) else { guard let undoManager = undoManager, let deleteCommand = DeleteCommand(nodesToDelete: nodesToDelete, treeController: treeController, undoManager: undoManager, errorHandler: ErrorHandler.present) else {
return return
} }

View File

@ -20,10 +20,11 @@ final class DeleteCommand: UndoableCommand {
var redoActionName: String { var redoActionName: String {
return undoActionName return undoActionName
} }
let errorHandler: (Error) -> ()
private let itemSpecifiers: [SidebarItemSpecifier] private let itemSpecifiers: [SidebarItemSpecifier]
init?(nodesToDelete: [Node], treeController: TreeController, undoManager: UndoManager) { init?(nodesToDelete: [Node], treeController: TreeController, undoManager: UndoManager, errorHandler: @escaping (Error) -> ()) {
guard DeleteCommand.canDelete(nodesToDelete) else { guard DeleteCommand.canDelete(nodesToDelete) else {
return nil return nil
@ -35,8 +36,9 @@ final class DeleteCommand: UndoableCommand {
self.treeController = treeController self.treeController = treeController
self.undoActionName = actionName self.undoActionName = actionName
self.undoManager = undoManager self.undoManager = undoManager
self.errorHandler = errorHandler
let itemSpecifiers = nodesToDelete.compactMap{ SidebarItemSpecifier(node: $0) } let itemSpecifiers = nodesToDelete.compactMap{ SidebarItemSpecifier(node: $0, errorHandler: errorHandler) }
guard !itemSpecifiers.isEmpty else { guard !itemSpecifiers.isEmpty else {
return nil return nil
} }
@ -112,6 +114,7 @@ private struct SidebarItemSpecifier {
private let folder: Folder? private let folder: Folder?
private let feed: Feed? private let feed: Feed?
private let path: ContainerPath private let path: ContainerPath
private let errorHandler: (Error) -> ()
private var container: Container? { private var container: Container? {
if let parentFolder = parentFolder { if let parentFolder = parentFolder {
@ -123,7 +126,7 @@ private struct SidebarItemSpecifier {
return nil return nil
} }
init?(node: Node) { init?(node: Node, errorHandler: @escaping (Error) -> ()) {
var account: Account? var account: Account?
@ -148,6 +151,9 @@ private struct SidebarItemSpecifier {
self.account = account! self.account = account!
self.path = ContainerPath(account: account!, folders: node.containingFolders()) self.path = ContainerPath(account: account!, folders: node.containingFolders())
self.errorHandler = errorHandler
} }
func delete(completion: @escaping () -> Void) { func delete(completion: @escaping () -> Void) {
@ -213,11 +219,7 @@ private struct SidebarItemSpecifier {
case .success: case .success:
break break
case .failure(let error): case .failure(let error):
#if os(macOS) errorHandler(error)
NSApplication.shared.presentError(error)
#else
UIApplication.shared.presentError(error)
#endif
} }
} }

View File

@ -187,10 +187,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
// If we haven't refreshed the database for 15 minutes, run a refresh automatically // If we haven't refreshed the database for 15 minutes, run a refresh automatically
if let lastRefresh = AppDefaults.lastRefresh { if let lastRefresh = AppDefaults.lastRefresh {
if Date() > lastRefresh.addingTimeInterval(15 * 60) { if Date() > lastRefresh.addingTimeInterval(15 * 60) {
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present) AccountManager.shared.refreshAll(errorHandler: ErrorHandler.log)
} }
} else { } else {
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present) AccountManager.shared.refreshAll(errorHandler: ErrorHandler.log)
} }
} }

View File

@ -14,8 +14,10 @@ struct ErrorHandler {
private static var log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "Account") private static var log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "Account")
public static func present(_ error: Error) { public static func present(_ viewController: UIViewController) -> (Error) -> () {
UIApplication.shared.presentError(error) return { [weak viewController] error in
viewController?.presentError(error)
}
} }
public static func log(_ error: Error) { public static func log(_ error: Error) {

View File

@ -526,7 +526,7 @@ class MasterFeedViewController: ProgressTableViewController, UndoableCommandRunn
guard let undoManager = undoManager, guard let undoManager = undoManager,
let deleteNode = navState.nodeFor(indexPath), let deleteNode = navState.nodeFor(indexPath),
let deleteCommand = DeleteCommand(nodesToDelete: [deleteNode], treeController: navState.treeController, undoManager: undoManager) let deleteCommand = DeleteCommand(nodesToDelete: [deleteNode], treeController: navState.treeController, undoManager: undoManager, errorHandler: ErrorHandler.present(self))
else { else {
return return
} }
@ -625,7 +625,7 @@ extension MasterFeedViewController: MasterFeedTableViewCellDelegate {
private extension MasterFeedViewController { private extension MasterFeedViewController {
@objc private func refreshAccounts(_ sender: Any) { @objc private func refreshAccounts(_ sender: Any) {
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present) AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present(self))
refreshControl?.endRefreshing() refreshControl?.endRefreshing()
} }

View File

@ -367,7 +367,7 @@ class MasterTimelineViewController: ProgressTableViewController, UndoableCommand
private extension MasterTimelineViewController { private extension MasterTimelineViewController {
@objc private func refreshAccounts(_ sender: Any) { @objc private func refreshAccounts(_ sender: Any) {
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present) AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present(self))
refreshControl?.endRefreshing() refreshControl?.endRefreshing()
} }

View File

@ -87,7 +87,7 @@ class FeedbinAccountViewController: UIViewController {
case .success: case .success:
break break
case .failure(let error): case .failure(let error):
UIApplication.shared.presentError(error) self.presentError(error)
} }
} }
} }

@ -1 +1 @@
Subproject commit 111690033354afc1cf57e37a326c344a0fe93b77 Subproject commit 23e307542e5c65b3fbe4c3a022a97570c176a900