From 7d8feba24b145c2ca30e6f8f46695a8f4ca535d9 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 3 Mar 2020 11:39:04 -0800 Subject: [PATCH] Remove file coordinator usage from account files. Issue #1821 --- Frameworks/Account/AccountMetadataFile.swift | 36 +++++-------------- Frameworks/Account/OPMLFile.swift | 38 +++++--------------- Frameworks/Account/WebFeedMetadataFile.swift | 36 +++++-------------- 3 files changed, 26 insertions(+), 84 deletions(-) diff --git a/Frameworks/Account/AccountMetadataFile.swift b/Frameworks/Account/AccountMetadataFile.swift index 6e17ac734..d3bc67d65 100644 --- a/Frameworks/Account/AccountMetadataFile.swift +++ b/Frameworks/Account/AccountMetadataFile.swift @@ -34,20 +34,11 @@ final class AccountMetadataFile { } func load() { - let errorPointer: NSErrorPointer = nil - let fileCoordinator = NSFileCoordinator() - - fileCoordinator.coordinate(readingItemAt: fileURL, options: [], error: errorPointer, byAccessor: { readURL in - if let fileData = try? Data(contentsOf: readURL) { - let decoder = PropertyListDecoder() - account.metadata = (try? decoder.decode(AccountMetadata.self, from: fileData)) ?? AccountMetadata() - } - account.metadata.delegate = account - }) - - if let error = errorPointer?.pointee { - os_log(.error, log: log, "Read from disk coordination failed: %@.", error.localizedDescription) + if let fileData = try? Data(contentsOf: fileURL) { + let decoder = PropertyListDecoder() + account.metadata = (try? decoder.decode(AccountMetadata.self, from: fileData)) ?? AccountMetadata() } + account.metadata.delegate = account } func save() { @@ -56,20 +47,11 @@ final class AccountMetadataFile { let encoder = PropertyListEncoder() encoder.outputFormat = .binary - let errorPointer: NSErrorPointer = nil - let fileCoordinator = NSFileCoordinator() - - fileCoordinator.coordinate(writingItemAt: fileURL, options: [], error: errorPointer, byAccessor: { writeURL in - do { - let data = try encoder.encode(account.metadata) - try data.write(to: writeURL) - } catch let error as NSError { - os_log(.error, log: log, "Save to disk failed: %@.", error.localizedDescription) - } - }) - - if let error = errorPointer?.pointee { - os_log(.error, log: log, "Save to disk coordination failed: %@.", error.localizedDescription) + do { + let data = try encoder.encode(account.metadata) + try data.write(to: fileURL) + } catch let error as NSError { + os_log(.error, log: log, "Save to disk failed: %@.", error.localizedDescription) } } diff --git a/Frameworks/Account/OPMLFile.swift b/Frameworks/Account/OPMLFile.swift index 034efe4e1..eb17aa033 100644 --- a/Frameworks/Account/OPMLFile.swift +++ b/Frameworks/Account/OPMLFile.swift @@ -46,24 +46,13 @@ final class OPMLFile { func save() { guard !account.isDeleted else { return } - let opmlDocumentString = opmlDocument() - let errorPointer: NSErrorPointer = nil - let fileCoordinator = NSFileCoordinator() - - fileCoordinator.coordinate(writingItemAt: fileURL, options: [], error: errorPointer, byAccessor: { writeURL in - do { - try opmlDocumentString.write(to: writeURL, atomically: true, encoding: .utf8) - } catch let error as NSError { - os_log(.error, log: log, "OPML save to disk failed: %@.", error.localizedDescription) - } - }) - - if let error = errorPointer?.pointee { - os_log(.error, log: log, "OPML save to disk coordination failed: %@.", error.localizedDescription) + do { + try opmlDocumentString.write(to: fileURL, atomically: true, encoding: .utf8) + } catch let error as NSError { + os_log(.error, log: log, "OPML save to disk failed: %@.", error.localizedDescription) } - } } @@ -83,22 +72,11 @@ private extension OPMLFile { func opmlFileData() -> Data? { var fileData: Data? = nil - let errorPointer: NSErrorPointer = nil - let fileCoordinator = NSFileCoordinator() - fileCoordinator.coordinate(readingItemAt: fileURL, options: [], error: errorPointer, byAccessor: { readURL in - do { - fileData = try Data(contentsOf: readURL) - } catch { - // Commented out because it’s not an error on first run. - // TODO: make it so we know if it’s first run or not. - //NSApplication.shared.presentError(error) - os_log(.error, log: log, "OPML read from disk failed: %@.", error.localizedDescription) - } - }) - - if let error = errorPointer?.pointee { - os_log(.error, log: log, "OPML read from disk coordination failed: %@.", error.localizedDescription) + do { + fileData = try Data(contentsOf: fileURL) + } catch { + os_log(.error, log: log, "OPML read from disk failed: %@.", error.localizedDescription) } return fileData diff --git a/Frameworks/Account/WebFeedMetadataFile.swift b/Frameworks/Account/WebFeedMetadataFile.swift index 8b0b3c029..be04530d7 100644 --- a/Frameworks/Account/WebFeedMetadataFile.swift +++ b/Frameworks/Account/WebFeedMetadataFile.swift @@ -34,20 +34,11 @@ final class WebFeedMetadataFile { } func load() { - let errorPointer: NSErrorPointer = nil - let fileCoordinator = NSFileCoordinator() - - fileCoordinator.coordinate(readingItemAt: fileURL, options: [], error: errorPointer, byAccessor: { readURL in - if let fileData = try? Data(contentsOf: readURL) { - let decoder = PropertyListDecoder() - account.webFeedMetadata = (try? decoder.decode(Account.WebFeedMetadataDictionary.self, from: fileData)) ?? Account.WebFeedMetadataDictionary() - } - account.webFeedMetadata.values.forEach { $0.delegate = account } - }) - - if let error = errorPointer?.pointee { - os_log(.error, log: log, "Read from disk coordination failed: %@.", error.localizedDescription) + if let fileData = try? Data(contentsOf: fileURL) { + let decoder = PropertyListDecoder() + account.webFeedMetadata = (try? decoder.decode(Account.WebFeedMetadataDictionary.self, from: fileData)) ?? Account.WebFeedMetadataDictionary() } + account.webFeedMetadata.values.forEach { $0.delegate = account } } func save() { @@ -58,20 +49,11 @@ final class WebFeedMetadataFile { let encoder = PropertyListEncoder() encoder.outputFormat = .binary - let errorPointer: NSErrorPointer = nil - let fileCoordinator = NSFileCoordinator() - - fileCoordinator.coordinate(writingItemAt: fileURL, options: [], error: errorPointer, byAccessor: { writeURL in - do { - let data = try encoder.encode(feedMetadata) - try data.write(to: writeURL) - } catch let error as NSError { - os_log(.error, log: log, "Save to disk failed: %@.", error.localizedDescription) - } - }) - - if let error = errorPointer?.pointee { - os_log(.error, log: log, "Save to disk coordination failed: %@.", error.localizedDescription) + do { + let data = try encoder.encode(feedMetadata) + try data.write(to: fileURL) + } catch let error as NSError { + os_log(.error, log: log, "Save to disk failed: %@.", error.localizedDescription) } }