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 ArticlesDatabase
import RSWeb
import os.log
public extension Notification.Name {
static let AccountRefreshDidBegin = Notification.Name(rawValue: "AccountRefreshDidBegin")
@ -62,6 +63,8 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container,
return defaultName
}()
var log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "account")
public var isDeleted = false
public var account: Account? {
@ -917,11 +920,7 @@ private extension Account {
do {
opmlDocument = try RSOPMLParser.parseOPML(with: parserData)
} catch {
#if os(macOS)
NSApplication.shared.presentError(error)
#else
UIApplication.shared.presentError(error)
#endif
os_log(.error, log: log, "OPML Import failed: %@.", error.localizedDescription)
return
}
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)
}
catch let error as NSError {
#if os(macOS)
NSApplication.shared.presentError(error)
#else
UIApplication.shared.presentError(error)
#endif
os_log(.error, log: log, "Save to disk failed: %@.", error.localizedDescription)
}
}

View File

@ -330,7 +330,7 @@ protocol SidebarDelegate: class {
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
}

View File

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

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 let lastRefresh = AppDefaults.lastRefresh {
if Date() > lastRefresh.addingTimeInterval(15 * 60) {
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present)
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.log)
}
} else {
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present)
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.log)
}
}

View File

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

View File

@ -526,7 +526,7 @@ class MasterFeedViewController: ProgressTableViewController, UndoableCommandRunn
guard let undoManager = undoManager,
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 {
return
}
@ -625,7 +625,7 @@ extension MasterFeedViewController: MasterFeedTableViewCellDelegate {
private extension MasterFeedViewController {
@objc private func refreshAccounts(_ sender: Any) {
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present)
AccountManager.shared.refreshAll(errorHandler: ErrorHandler.present(self))
refreshControl?.endRefreshing()
}

View File

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

View File

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

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