Move Protocol declaration to top of ExportOPMLAccessoryViewController.swift. As critical API, it needs to be easy to spot.

Create separation extensions — one for protocol conformance, one for private methods — ExportOPMLController.

Make minor code formatting change: instead of { return } — which is hard to set a breakpoint on — move the return to its own line.

Remove an internal access qualifier, since internal is default and implied.
This commit is contained in:
Brent Simmons
2019-10-23 22:00:14 -07:00
parent a6915fe24e
commit 06b0e35739
2 changed files with 28 additions and 16 deletions

View File

@@ -9,6 +9,10 @@
import AppKit
import Account
protocol ExportOPMLAccessoryViewControllerDelegate: class {
func selectedAccountDidChange(_ accessoryViewController: ExportOPMLAccessoryViewController)
}
class ExportOPMLAccessoryViewController: NSViewController {
@IBOutlet weak var accountPopUpButton: NSPopUpButton!
@@ -56,6 +60,3 @@ class ExportOPMLAccessoryViewController: NSViewController {
}
}
protocol ExportOPMLAccessoryViewControllerDelegate: class {
func selectedAccountDidChange(_ accessoryViewController: ExportOPMLAccessoryViewController)
}

View File

@@ -9,7 +9,7 @@
import AppKit
import Account
class ExportOPMLController: ExportOPMLAccessoryViewControllerDelegate {
class ExportOPMLController {
weak var savePanel: NSSavePanel?
@@ -33,7 +33,9 @@ class ExportOPMLController: ExportOPMLAccessoryViewControllerDelegate {
panel.beginSheetModal(for: hostWindow) { result in
if result == NSApplication.ModalResponse.OK, let url = panel.url {
DispatchQueue.main.async {
guard let account = accessoryViewController.selectedAccount else { return }
guard let account = accessoryViewController.selectedAccount else {
return
}
let filename = url.lastPathComponent
let opmlString = OPMLExporter.OPMLString(with: account, title: filename)
do {
@@ -45,22 +47,31 @@ class ExportOPMLController: ExportOPMLAccessoryViewControllerDelegate {
}
}
}
}
}
private func updateNameFieldStringValueIfAppropriate(savePanel panel: NSSavePanel, from accessoryViewController: ExportOPMLAccessoryViewController, force: Bool = false) {
extension ExportOPMLController: ExportOPMLAccessoryViewControllerDelegate {
if !force && !panel.nameFieldStringValue.hasPrefix("Subscriptions-") { return }
guard let account = accessoryViewController.selectedAccount else { return }
let accountName = account.nameForDisplay.replacingOccurrences(of: " ", with: "").trimmingCharacters(in: .whitespaces)
panel.nameFieldStringValue = "Subscriptions-\(accountName).opml"
}
internal func selectedAccountDidChange(_ accessoryViewController: ExportOPMLAccessoryViewController) {
func selectedAccountDidChange(_ accessoryViewController: ExportOPMLAccessoryViewController) {
if let savePanel = savePanel {
self.updateNameFieldStringValueIfAppropriate(savePanel: savePanel, from: accessoryViewController)
}
}
}
private extension ExportOPMLController {
func updateNameFieldStringValueIfAppropriate(savePanel panel: NSSavePanel, from accessoryViewController: ExportOPMLAccessoryViewController, force: Bool = false) {
if !force && !panel.nameFieldStringValue.hasPrefix("Subscriptions-") {
return
}
guard let account = accessoryViewController.selectedAccount else {
return
}
let accountName = account.nameForDisplay.replacingOccurrences(of: " ", with: "").trimmingCharacters(in: .whitespaces)
panel.nameFieldStringValue = "Subscriptions-\(accountName).opml"
}
}