diff --git a/Mac/AppDefaults.swift b/Mac/AppDefaults.swift
index b5400ac1d..c16718cde 100644
--- a/Mac/AppDefaults.swift
+++ b/Mac/AppDefaults.swift
@@ -24,7 +24,6 @@ final class AppDefaults {
struct Key {
static let firstRunDate = "firstRunDate"
static let windowState = "windowState"
- static let activeExtensionPointIDs = "activeExtensionPointIDs"
static let lastImageCacheFlushDate = "lastImageCacheFlushDate"
static let sidebarFontSize = "sidebarFontSize"
static let timelineFontSize = "timelineFontSize"
@@ -86,15 +85,6 @@ final class AppDefaults {
}
}
- var activeExtensionPointIDs: [[AnyHashable : AnyHashable]]? {
- get {
- return UserDefaults.standard.object(forKey: Key.activeExtensionPointIDs) as? [[AnyHashable : AnyHashable]]
- }
- set {
- UserDefaults.standard.set(newValue, forKey: Key.activeExtensionPointIDs)
- }
- }
-
var lastImageCacheFlushDate: Date? {
get {
return AppDefaults.date(for: Key.lastImageCacheFlushDate)
diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift
index c7bba32b0..ee430573e 100644
--- a/Mac/AppDelegate.swift
+++ b/Mac/AppDelegate.swift
@@ -123,7 +123,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations,
SecretsManager.provider = Secrets()
AccountManager.shared = AccountManager(accountsFolder: Platform.dataSubfolder(forApplication: nil, folderName: "Accounts")!)
ArticleThemesManager.shared = ArticleThemesManager(folderPath: Platform.dataSubfolder(forApplication: nil, folderName: "Themes")!)
- FeedProviderManager.shared.delegate = ExtensionPointManager.shared
NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(inspectableObjectsDidChange(_:)), name: .InspectableObjectsDidChange, object: nil)
diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard
index 67652920e..0a55aee4e 100644
--- a/Mac/Base.lproj/Preferences.storyboard
+++ b/Mac/Base.lproj/Preferences.storyboard
@@ -523,16 +523,16 @@
-
+
-
+
-
+
-
+
@@ -639,7 +639,7 @@
-
+
@@ -685,160 +685,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Mac/MainWindow/SharingServicePickerDelegate.swift b/Mac/MainWindow/SharingServicePickerDelegate.swift
index 13c989460..591062fc5 100644
--- a/Mac/MainWindow/SharingServicePickerDelegate.swift
+++ b/Mac/MainWindow/SharingServicePickerDelegate.swift
@@ -27,12 +27,14 @@ import RSCore
}
static func customSharingServices(for items: [Any]) -> [NSSharingService] {
- let customServices = ExtensionPointManager.shared.activeSendToCommands.compactMap { (sendToCommand) -> NSSharingService? in
+ let customServices: [SendToCommand] = [SendToMarsEditCommand(), SendToMicroBlogCommand()]
+
+ return customServices.compactMap { (sendToCommand) -> NSSharingService? in
guard let object = items.first else {
return nil
}
-
+
guard sendToCommand.canSendObject(object, selectedText: nil) else {
return nil
}
@@ -42,6 +44,5 @@ import RSCore
sendToCommand.sendObject(object, selectedText: nil)
}
}
- return customServices
}
}
diff --git a/Mac/Preferences/ExtensionPoints/Base.lproj/ExtensionPointDetail.xib b/Mac/Preferences/ExtensionPoints/Base.lproj/ExtensionPointDetail.xib
deleted file mode 100644
index 898db2415..000000000
--- a/Mac/Preferences/ExtensionPoints/Base.lproj/ExtensionPointDetail.xib
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Mac/Preferences/ExtensionPoints/EnableExtensionPointHelpView.swift b/Mac/Preferences/ExtensionPoints/EnableExtensionPointHelpView.swift
deleted file mode 100644
index efa00d6e8..000000000
--- a/Mac/Preferences/ExtensionPoints/EnableExtensionPointHelpView.swift
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// EnableExtensionPointHelpView.swift
-// NetNewsWire
-//
-// Created by Stuart Breckenridge on 4/11/20.
-// Copyright © 2020 Ranchero Software. All rights reserved.
-//
-
-import AppKit
-import SwiftUI
-import RSCore
-
-struct EnableExtensionPointHelpView: View {
-
- var extensionPoints: [ExtensionPoint.Type] {
- let types = ExtensionPointManager.shared.availableExtensionPointTypes.filter({ $0 is SendToCommand.Type }) +
- ExtensionPointManager.shared.availableExtensionPointTypes.filter({ !($0 is SendToCommand.Type) })
- return types
- }
- var helpText: String
- weak var preferencesController: ExtensionPointPreferencesViewController?
-
- var body: some View {
- VStack {
- HStack {
- ForEach(0..? // required because presentationMode.dismiss() doesn't work
- weak var enabler: ExtensionPointPreferencesEnabler?
- @State private var extensionPointTypeName = ""
- private var selectedType: ExtensionPoint.Type?
-
- init(enabler: ExtensionPointPreferencesEnabler?, selectedType: ExtensionPoint.Type?) {
- self.enabler = enabler
- self.selectedType = selectedType
- }
-
- var body: some View {
- VStack(alignment: .leading, spacing: 8) {
- Text("label.text.choose-extension-to-add", comment: "Choose an extension to add...")
- .font(.headline)
- .padding()
-
- feedProviderExtensionPoints
- sendToCommandExtensionPoints
-
- HStack(spacing: 12) {
- Spacer()
- Button(action: {
- parent?.dismiss(nil)
- }, label: {
- Text("button.title.cancel", comment: "Cancel")
- .frame(width: 80)
- })
- .help("Cancel")
- .keyboardShortcut(.cancelAction)
-
- Button(action: {
- enabler?.enable(typeFromName(extensionPointTypeName))
- parent?.dismiss(nil)
- }, label: {
- Text("Continue")
- .frame(width: 80)
- })
- .help("Add Extension")
- .keyboardShortcut(.defaultAction)
- .disabled(disableContinue())
- }
- .padding(.top, 12)
- .padding(.bottom, 4)
- }
- .pickerStyle(RadioGroupPickerStyle())
- .fixedSize(horizontal: false, vertical: true)
- .frame(width: 420)
- .padding()
- .onAppear {
- if selectedType != nil {
- extensionPointTypeName = String(describing: selectedType!)
- }
- }
- }
-
- var feedProviderExtensionPoints: some View {
- VStack(alignment: .leading) {
- let extensionPointTypeNames = Self.feedProviderExtensionPointTypes.map { String(describing: $0) }
- if extensionPointTypeNames.count > 0 {
- Text("label.text.feed-provider", comment: "Feed Provider")
- .font(.headline)
- .padding(.horizontal)
-
- Picker(selection: $extensionPointTypeName, label: Text(""), content: {
- ForEach(extensionPointTypeNames, id: \.self, content: { extensionPointTypeName in
- let extensionPointType = typeFromName(extensionPointTypeName)
- HStack(alignment: .center) {
- Image(nsImage: extensionPointType.image)
- .resizable()
- .aspectRatio(contentMode: .fit)
- .frame(width: 25, height: 25, alignment: .center)
- .padding(.leading, 4)
-
-
- Text(extensionPointType.title)
- }
- .tag(extensionPointTypeName)
- })
- })
- .pickerStyle(RadioGroupPickerStyle())
- .offset(x: 7.5, y: 0)
-
- Text("label.text.feed-provider-explainer", comment: "An extension that makes websites appear to provide RSS feeds for their content.")
- .foregroundColor(.gray)
- .font(.caption)
- .padding(.horizontal)
- .onAppear {
- if extensionPointTypeName.count == 0 {
- self.extensionPointTypeName = extensionPointTypeNames.first!
- }
- }
- }
- }
-
- }
-
- var sendToCommandExtensionPoints: some View {
- VStack(alignment: .leading) {
- let extensionPointTypeNames = Self.sendToCommandExtensionPointTypes.map { String(describing: $0) }
- if extensionPointTypeNames.count > 0 {
- Text("label.text.third-party-integration", comment: "Third-Party Integration")
- .font(.headline)
- .padding(.horizontal)
- .padding(.top, 8)
-
- Picker(selection: $extensionPointTypeName, label: Text(""), content: {
- ForEach(extensionPointTypeNames, id: \.self, content: { extensionPointTypeName in
- let extensionPointType = typeFromName(extensionPointTypeName)
- HStack(alignment: .center) {
- Image(nsImage: extensionPointType.image)
- .resizable()
- .aspectRatio(contentMode: .fit)
- .frame(width: 25, height: 25, alignment: .center)
- .padding(.leading, 4)
-
-
- Text(extensionPointType.title)
- }
- .tag(extensionPointTypeName)
- })
- })
- .pickerStyle(RadioGroupPickerStyle())
- .offset(x: 7.5, y: 0)
-
- Text("label.text.share-extension-explainer", comment: "An extension that enables a share menu item that passes article data to a third-party application.")
- .foregroundColor(.gray)
- .font(.caption)
- .padding(.horizontal)
- }
- }
-
- }
-
- static var sendToCommandExtensionPointTypes: [ExtensionPoint.Type] {
- return ExtensionPointManager.shared.availableExtensionPointTypes.filter({ $0 is SendToCommand.Type })
- }
-
- static var feedProviderExtensionPointTypes: [ExtensionPoint.Type] {
- return ExtensionPointManager.shared.availableExtensionPointTypes.filter({ !($0 is SendToCommand.Type) })
- }
-
- func typeFromName(_ name: String) -> ExtensionPoint.Type {
- for type in ExtensionPointManager.shared.possibleExtensionPointTypes {
- if name == String(describing: type) {
- return type
- }
- }
- fatalError()
- }
-
- func disableContinue() -> Bool {
- ExtensionPointManager.shared.availableExtensionPointTypes.count == 0 || extensionPointTypeName.count == 0
- }
-}
-
-
-
diff --git a/Mac/Preferences/ExtensionPoints/ExtensionPointDetailViewController.swift b/Mac/Preferences/ExtensionPoints/ExtensionPointDetailViewController.swift
deleted file mode 100644
index 0a97d68ae..000000000
--- a/Mac/Preferences/ExtensionPoints/ExtensionPointDetailViewController.swift
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// ExtensionPointDetailViewController.swift
-// NetNewsWire
-//
-// Created by Maurice Parker on 4/8/20.
-// Copyright © 2020 Ranchero Software. All rights reserved.
-//
-
-import Cocoa
-
-@MainActor class ExtensionPointDetailViewController: NSViewController {
-
- @IBOutlet weak var imageView: NSImageView!
- @IBOutlet weak var titleLabel: NSTextField!
- @IBOutlet weak var descriptionLabel: NSTextField!
-
- private var extensionPointWindowController: NSWindowController?
- private var extensionPoint: ExtensionPoint?
-
- init(extensionPoint: ExtensionPoint) {
- super.init(nibName: "ExtensionPointDetail", bundle: nil)
- self.extensionPoint = extensionPoint
- }
-
- public required init?(coder: NSCoder) {
- super.init(coder: coder)
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
- guard let extensionPoint = extensionPoint else { return }
- imageView.image = extensionPoint.image
- titleLabel.stringValue = extensionPoint.title
- descriptionLabel.attributedStringValue = extensionPoint.description
- }
-
-}
diff --git a/Mac/Preferences/ExtensionPoints/ExtensionPointEnableWindowController.swift b/Mac/Preferences/ExtensionPoints/ExtensionPointEnableWindowController.swift
deleted file mode 100644
index 1af42d40e..000000000
--- a/Mac/Preferences/ExtensionPoints/ExtensionPointEnableWindowController.swift
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// ExtensionPointEnableWindowController.swift
-// NetNewsWire
-//
-// Created by Maurice Parker on 4/8/20.
-// Copyright © 2020 Ranchero Software. All rights reserved.
-//
-
-import Cocoa
-import AuthenticationServices
-import OAuthSwift
-import Secrets
-
-@MainActor class ExtensionPointEnableWindowController: NSWindowController {
-
- @IBOutlet weak var imageView: NSImageView!
- @IBOutlet weak var titleLabel: NSTextField!
- @IBOutlet weak var descriptionLabel: NSTextField!
- @IBOutlet weak var enableButton: NSButton!
-
- private weak var hostWindow: NSWindow?
-
- private var callbackURL: URL? = nil
- private var oauth: OAuthSwift?
-
- var extensionPointType: ExtensionPoint.Type?
-
- convenience init() {
- self.init(windowNibName: NSNib.Name("ExtensionPointEnable"))
- }
-
- override func windowDidLoad() {
- super.windowDidLoad()
- guard let extensionPointType = extensionPointType else { return }
-
- imageView.image = extensionPointType.image
- titleLabel.stringValue = extensionPointType.title
- descriptionLabel.attributedStringValue = extensionPointType.description
- }
-
- // MARK: API
-
- func runSheetOnWindow(_ hostWindow: NSWindow) {
- self.hostWindow = hostWindow
- hostWindow.beginSheet(window!)
- }
-
- // MARK: Actions
-
- @IBAction func cancel(_ sender: Any) {
- hostWindow!.endSheet(window!, returnCode: NSApplication.ModalResponse.cancel)
- }
-
- @IBAction func enable(_ sender: Any) {
- guard let extensionPointType = extensionPointType else { return }
-
- enableButton.isEnabled = false
-
- if let oauth1 = extensionPointType as? OAuth1SwiftProvider.Type {
- enableOauth1(oauth1)
- } else if let oauth2 = extensionPointType as? OAuth2SwiftProvider.Type {
- enableOauth2(oauth2)
- } else {
- ExtensionPointManager.shared.activateExtensionPoint(extensionPointType) { result in
- if case .failure(let error) = result {
- self.presentError(error)
- }
- self.hostWindow!.endSheet(self.window!, returnCode: NSApplication.ModalResponse.OK)
- }
- }
-
- }
-
-}
-
-extension ExtensionPointEnableWindowController: OAuthSwiftURLHandlerType {
-
- public func handle(_ url: URL) {
- let session = ASWebAuthenticationSession(url: url, callbackURLScheme: callbackURL!.scheme, completionHandler: { (url, error) in
- if let callbackedURL = url {
- OAuth1Swift.handle(url: callbackedURL)
- }
-
- guard let error = error else { return }
-
- self.oauth?.cancel()
- self.oauth = nil
-
- DispatchQueue.main.async {
- self.hostWindow!.endSheet(self.window!, returnCode: NSApplication.ModalResponse.OK)
- }
-
- if case ASWebAuthenticationSessionError.canceledLogin = error {
- print("Login cancelled.")
- } else {
- NSApplication.shared.presentError(error)
- }
- })
-
- session.presentationContextProvider = self
- if !session.start() {
- print("Session failed to start!!!")
- }
-
- }
-}
-
-extension ExtensionPointEnableWindowController: ASWebAuthenticationPresentationContextProviding {
-
- public func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
- return hostWindow!
- }
-
-}
-
-private extension ExtensionPointEnableWindowController {
-
- func enableOauth1(_ provider: OAuth1SwiftProvider.Type) {
- callbackURL = provider.callbackURL
-
- let oauth1 = provider.oauth1Swift
- self.oauth = oauth1
- oauth1.authorizeURLHandler = self
-
- oauth1.authorize(withCallbackURL: callbackURL!) { [weak self] result in
- guard let self = self, let extensionPointType = self.extensionPointType else { return }
-
- switch result {
- case .success(let tokenSuccess):
- ExtensionPointManager.shared.activateExtensionPoint(extensionPointType, tokenSuccess: tokenSuccess) { result in
- if case .failure(let error) = result {
- self.presentError(error)
- }
- self.hostWindow!.endSheet(self.window!, returnCode: NSApplication.ModalResponse.OK)
- }
- case .failure(let oauthSwiftError):
- self.presentError(oauthSwiftError)
- }
-
- self.oauth?.cancel()
- self.oauth = nil
- }
-
- }
-
- func enableOauth2(_ provider: OAuth2SwiftProvider.Type) {
- callbackURL = provider.callbackURL
-
- let oauth2 = provider.oauth2Swift
- self.oauth = oauth2
- oauth2.authorizeURLHandler = self
-
- let oauth2Vars = provider.oauth2Vars
-
- oauth2.authorize(withCallbackURL: callbackURL!, scope: oauth2Vars.scope, state: oauth2Vars.state, parameters: oauth2Vars.params) { [weak self] result in
- guard let self = self, let extensionPointType = self.extensionPointType else { return }
-
- switch result {
- case .success(let tokenSuccess):
- ExtensionPointManager.shared.activateExtensionPoint(extensionPointType, tokenSuccess: tokenSuccess) { result in
- if case .failure(let error) = result {
- self.presentError(error)
- }
- self.hostWindow!.endSheet(self.window!, returnCode: NSApplication.ModalResponse.OK)
- }
- case .failure(let oauthSwiftError):
- self.presentError(oauthSwiftError)
- }
-
- self.oauth?.cancel()
- self.oauth = nil
- }
-
- }
-
-}
diff --git a/Mac/Preferences/ExtensionPoints/ExtensionPointPreferencesViewController.swift b/Mac/Preferences/ExtensionPoints/ExtensionPointPreferencesViewController.swift
deleted file mode 100644
index 0dbe7b6e5..000000000
--- a/Mac/Preferences/ExtensionPoints/ExtensionPointPreferencesViewController.swift
+++ /dev/null
@@ -1,324 +0,0 @@
-//
-// ExtensionsPreferencesViewController.swift
-// NetNewsWire
-//
-// Created by Maurice Parker on 4/6/20.
-// Copyright © 2020 Ranchero Software. All rights reserved.
-//
-
-import AppKit
-import SwiftUI
-import AuthenticationServices
-import OAuthSwift
-import Secrets
-
-protocol ExtensionPointPreferencesEnabler: AnyObject {
- func enable(_ extensionPointType: ExtensionPoint.Type)
-}
-
-@MainActor final class ExtensionPointPreferencesViewController: NSViewController {
-
- @IBOutlet weak var tableView: NSTableView!
- @IBOutlet weak var detailView: NSView!
- @IBOutlet weak var deleteButton: NSButton!
-
- private var activeExtensionPoints = [ExtensionPoint]()
- private var callbackURL: URL? = nil
- private var oauth: OAuthSwift?
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- tableView.delegate = self
- tableView.dataSource = self
-
- NotificationCenter.default.addObserver(self, selector: #selector(activeExtensionPointsDidChange(_:)), name: .ActiveExtensionPointsDidChange, object: nil)
-
- // Fix tableView frame — for some reason IB wants it 1pt wider than the clip view. This leads to unwanted horizontal scrolling.
- var rTable = tableView.frame
- rTable.size.width = tableView.superview!.frame.size.width
- tableView.frame = rTable
-
- showDefaultView()
-
- }
-
- @IBAction func enableExtensionPoints(_ sender: Any) {
- let controller = NSHostingController(rootView: EnableExtensionPointView(enabler: self, selectedType: nil))
- controller.rootView.parent = controller
- presentAsSheet(controller)
- }
-
- func enableExtensionPointFromSelection(_ selection: ExtensionPoint.Type) {
- let controller = NSHostingController(rootView: EnableExtensionPointView(enabler: self, selectedType: selection))
- controller.rootView.parent = controller
- presentAsSheet(controller)
- }
-
- @IBAction func disableExtensionPoint(_ sender: Any) {
- guard tableView.selectedRow != -1 else {
- return
- }
-
- let extensionPoint = activeExtensionPoints[tableView.selectedRow]
-
- let alert = NSAlert()
- alert.alertStyle = .warning
- let prompt = NSLocalizedString("alert.title.deactivate-extension.%@", comment: "Deactivate “%@“?")
- alert.messageText = String(format: prompt, extensionPoint.title)
- alert.informativeText = NSLocalizedString("alert.message.cannot-undo-action", comment: "You can't undo this action.")
-
- alert.addButton(withTitle: NSLocalizedString("button.title.deactivate", comment: "Deactivate Extension"))
- alert.addButton(withTitle: NSLocalizedString("button.title.cancel", comment: "Cancel Deactivate Extension"))
-
- alert.beginSheetModal(for: view.window!) { [weak self] result in
- if result == NSApplication.ModalResponse.alertFirstButtonReturn {
- ExtensionPointManager.shared.deactivateExtensionPoint(extensionPoint.extensionPointID)
- self?.hideController()
- }
- }
-
- }
-}
-
-// MARK: - NSTableViewDataSource
-
-extension ExtensionPointPreferencesViewController: NSTableViewDataSource {
-
- func numberOfRows(in tableView: NSTableView) -> Int {
- return activeExtensionPoints.count
- }
-
- func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
- return activeExtensionPoints[row]
- }
-}
-
-// MARK: - NSTableViewDelegate
-
-extension ExtensionPointPreferencesViewController: NSTableViewDelegate {
-
- private static let cellIdentifier = NSUserInterfaceItemIdentifier(rawValue: "AccountCell")
-
- func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
- if let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "Cell"), owner: nil) as? NSTableCellView {
- let extensionPoint = activeExtensionPoints[row]
- cell.textField?.stringValue = extensionPoint.title
- cell.imageView?.image = extensionPoint.image
- return cell
- }
- return nil
- }
-
- func tableViewSelectionDidChange(_ notification: Notification) {
-
- let selectedRow = tableView.selectedRow
- if tableView.selectedRow == -1 {
- deleteButton.isEnabled = false
- hideController()
- return
- } else {
- deleteButton.isEnabled = true
- }
-
- let extensionPoint = activeExtensionPoints[selectedRow]
- let controller = ExtensionPointDetailViewController(extensionPoint: extensionPoint)
- showController(controller)
-
- }
-
-}
-
-// MARK: ExtensionPointPreferencesViewController
-
-extension ExtensionPointPreferencesViewController: ExtensionPointPreferencesEnabler {
-
- func enable(_ extensionPointType: ExtensionPoint.Type) {
- if let oauth1 = extensionPointType as? OAuth1SwiftProvider.Type {
- enableOauth1(oauth1, extensionPointType: extensionPointType)
- } else if let oauth2 = extensionPointType as? OAuth2SwiftProvider.Type {
- enableOauth2(oauth2, extensionPointType: extensionPointType)
- } else {
- ExtensionPointManager.shared.activateExtensionPoint(extensionPointType) { result in
- if case .failure(let error) = result {
- self.presentError(error)
- }
- }
- }
- }
-
-}
-
-extension ExtensionPointPreferencesViewController: OAuthSwiftURLHandlerType {
-
- public func handle(_ url: URL) {
- let session = ASWebAuthenticationSession(url: url, callbackURLScheme: callbackURL!.scheme, completionHandler: { (url, error) in
- if let callbackedURL = url {
- OAuth1Swift.handle(url: callbackedURL)
- }
-
- guard let error = error else { return }
-
- self.oauth?.cancel()
- self.oauth = nil
-
- if case ASWebAuthenticationSessionError.canceledLogin = error {
- print("Login cancelled.")
- } else {
- NSApplication.shared.presentError(error)
- }
- })
-
- session.presentationContextProvider = self
- if !session.start() {
- print("Session failed to start!!!")
- }
-
- }
-}
-
-extension ExtensionPointPreferencesViewController: ASWebAuthenticationPresentationContextProviding {
-
- public func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor {
- return view.window!
- }
-
-}
-
-// MARK: - Private
-
-private extension ExtensionPointPreferencesViewController {
-
- @objc func activeExtensionPointsDidChange(_ note: Notification) {
- showDefaultView()
- }
-
- func showDefaultView() {
- activeExtensionPoints = Array(ExtensionPointManager.shared.activeExtensionPoints.values).sorted(by: { $0.title < $1.title })
- tableView.reloadData()
-
- if tableView.selectedRow == -1 {
- var helpText = ""
- if ExtensionPointManager.shared.availableExtensionPointTypes.count == 0 {
- helpText = NSLocalizedString("label.text.added-all-extensions", comment: "You've added all available extensions.")
- }
- else if activeExtensionPoints.count == 0 {
- helpText = NSLocalizedString("label.text.add-extension", comment: "Add an extension by clicking the + button.")
- } else {
- helpText = NSLocalizedString("label.text.select-or-add-extension", comment: "Select an extension or add a new extension by clicking the + button.")
- }
-
- if let controller = children.first {
- children.removeAll()
- controller.view.removeFromSuperview()
- }
-
- let textHostingController = NSHostingController(rootView: EnableExtensionPointHelpView(helpText: helpText, preferencesController: self))
- addChild(textHostingController)
- textHostingController.view.translatesAutoresizingMaskIntoConstraints = false
- detailView.addSubview(textHostingController.view)
- detailView.addConstraints([
- NSLayoutConstraint(item: textHostingController.view, attribute: .top, relatedBy: .equal, toItem: detailView, attribute: .top, multiplier: 1, constant: 1),
- NSLayoutConstraint(item: textHostingController.view, attribute: .bottom, relatedBy: .equal, toItem: detailView, attribute: .bottom, multiplier: 1, constant: -deleteButton.frame.height),
- NSLayoutConstraint(item: textHostingController.view, attribute: .width, relatedBy: .equal, toItem: detailView, attribute: .width, multiplier: 1, constant: 1)
- ])
- }
- }
-
- func showController(_ controller: NSViewController) {
- hideController()
-
- addChild(controller)
- controller.view.translatesAutoresizingMaskIntoConstraints = false
- detailView.addSubview(controller.view)
- detailView.addFullSizeConstraints(forSubview: controller.view)
- }
-
- func hideController() {
- if let controller = children.first {
- children.removeAll()
- controller.view.removeFromSuperview()
- }
-
- if tableView.selectedRow == -1 {
- var helpText = ""
- if ExtensionPointManager.shared.availableExtensionPointTypes.count == 0 {
- helpText = NSLocalizedString("label.text.added-all-extensions", comment: "You've added all available extensions.")
- }
- else if activeExtensionPoints.count == 0 {
- helpText = NSLocalizedString("label.text.add-extension", comment: "Add an extension by clicking the + button.")
- } else {
- helpText = NSLocalizedString("label.text.select-or-add-extension", comment: "Select an extension or add a new extension by clicking the + button.")
- }
-
- let textHostingController = NSHostingController(rootView: EnableExtensionPointHelpView(helpText: helpText, preferencesController: self))
- addChild(textHostingController)
- textHostingController.view.translatesAutoresizingMaskIntoConstraints = false
- detailView.addSubview(textHostingController.view)
- detailView.addConstraints([
- NSLayoutConstraint(item: textHostingController.view, attribute: .top, relatedBy: .equal, toItem: detailView, attribute: .top, multiplier: 1, constant: 1),
- NSLayoutConstraint(item: textHostingController.view, attribute: .bottom, relatedBy: .equal, toItem: detailView, attribute: .bottom, multiplier: 1, constant: -deleteButton.frame.height),
- NSLayoutConstraint(item: textHostingController.view, attribute: .width, relatedBy: .equal, toItem: detailView, attribute: .width, multiplier: 1, constant: 1)
- ])
- }
- }
-
- func enableOauth1(_ provider: OAuth1SwiftProvider.Type, extensionPointType: ExtensionPoint.Type) {
- callbackURL = provider.callbackURL
-
- let oauth1 = provider.oauth1Swift
- self.oauth = oauth1
- oauth1.authorizeURLHandler = self
-
- oauth1.authorize(withCallbackURL: callbackURL!) { [weak self] result in
- guard let self = self else { return }
-
- switch result {
- case .success(let tokenSuccess):
- ExtensionPointManager.shared.activateExtensionPoint(extensionPointType, tokenSuccess: tokenSuccess) { result in
- if case .failure(let error) = result {
- self.presentError(error)
- }
- }
- case .failure(let oauthSwiftError):
- self.presentError(oauthSwiftError)
- }
-
- self.oauth?.cancel()
- self.oauth = nil
- }
-
- }
-
- func enableOauth2(_ provider: OAuth2SwiftProvider.Type, extensionPointType: ExtensionPoint.Type) {
- callbackURL = provider.callbackURL
-
- let oauth2 = provider.oauth2Swift
- self.oauth = oauth2
- oauth2.authorizeURLHandler = self
-
- let oauth2Vars = provider.oauth2Vars
-
- oauth2.authorize(withCallbackURL: callbackURL!, scope: oauth2Vars.scope, state: oauth2Vars.state, parameters: oauth2Vars.params) { [weak self] result in
- guard let self = self else { return }
-
- switch result {
- case .success(let tokenSuccess):
- ExtensionPointManager.shared.activateExtensionPoint(extensionPointType, tokenSuccess: tokenSuccess) { result in
- if case .failure(let error) = result {
- self.presentError(error)
- }
- }
- case .failure(let oauthSwiftError):
- self.presentError(oauthSwiftError)
- }
-
- self.oauth?.cancel()
- self.oauth = nil
- }
-
- }
-
-}
-
-
diff --git a/Mac/Preferences/ExtensionPoints/en-GB.lproj/ExtensionPointDetail.strings b/Mac/Preferences/ExtensionPoints/en-GB.lproj/ExtensionPointDetail.strings
deleted file mode 100644
index 9fffc448b..000000000
--- a/Mac/Preferences/ExtensionPoints/en-GB.lproj/ExtensionPointDetail.strings
+++ /dev/null
@@ -1,6 +0,0 @@
-
-/* Class = "NSTextFieldCell"; title = "Extension"; ObjectID = "CGj-bV-rXW"; */
-"CGj-bV-rXW.title" = "Extension";
-
-/* Class = "NSTabViewItem"; label = "Extension"; ObjectID = "k6A-mz-zOF"; */
-"k6A-mz-zOF.label" = "Extension";
diff --git a/Mac/Preferences/ExtensionPoints/zh-Hans.lproj/ExtensionPointDetail.strings b/Mac/Preferences/ExtensionPoints/zh-Hans.lproj/ExtensionPointDetail.strings
deleted file mode 100644
index 0f4c5d83b..000000000
--- a/Mac/Preferences/ExtensionPoints/zh-Hans.lproj/ExtensionPointDetail.strings
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Class = "NSTextFieldCell"; title = "Extension"; ObjectID = "CGj-bV-rXW"; */
-"CGj-bV-rXW.title" = "扩展";
-
-/* Class = "NSTabViewItem"; label = "Extension"; ObjectID = "k6A-mz-zOF"; */
-"k6A-mz-zOF.label" = "扩展";
-
diff --git a/Mac/Preferences/PreferencesWindowController.swift b/Mac/Preferences/PreferencesWindowController.swift
index 081edc724..0d5d7add2 100644
--- a/Mac/Preferences/PreferencesWindowController.swift
+++ b/Mac/Preferences/PreferencesWindowController.swift
@@ -24,7 +24,6 @@ private struct PreferencesToolbarItemSpec {
private struct ToolbarItemIdentifier {
static let General = "General"
static let Accounts = "Accounts"
- static let Extensions = "Extensions"
static let Advanced = "Advanced"
}
diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj
index 2e2f8fbac..ec18382b3 100644
--- a/NetNewsWire.xcodeproj/project.pbxproj
+++ b/NetNewsWire.xcodeproj/project.pbxproj
@@ -12,8 +12,6 @@
17071EF126F8137400F5E71D /* ArticleTheme+Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17071EEF26F8137400F5E71D /* ArticleTheme+Notifications.swift */; };
1710B9132552354E00679C0D /* AddAccountHelpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1710B9122552354E00679C0D /* AddAccountHelpView.swift */; };
1710B9142552354E00679C0D /* AddAccountHelpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1710B9122552354E00679C0D /* AddAccountHelpView.swift */; };
- 1710B929255246F900679C0D /* EnableExtensionPointHelpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1710B928255246F900679C0D /* EnableExtensionPointHelpView.swift */; };
- 1710B92A255246F900679C0D /* EnableExtensionPointHelpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1710B928255246F900679C0D /* EnableExtensionPointHelpView.swift */; };
17192ADA2567B3D500AAEACA /* RSSparkle in Frameworks */ = {isa = PBXBuildFile; productRef = 17192AD92567B3D500AAEACA /* RSSparkle */; };
17192AE52567B3FE00AAEACA /* org.sparkle-project.Downloader.xpc in Embed XPC Services */ = {isa = PBXBuildFile; fileRef = 17192AE12567B3FE00AAEACA /* org.sparkle-project.Downloader.xpc */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
17192AE62567B3FE00AAEACA /* org.sparkle-project.InstallerConnection.xpc in Embed XPC Services */ = {isa = PBXBuildFile; fileRef = 17192AE22567B3FE00AAEACA /* org.sparkle-project.InstallerConnection.xpc */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
@@ -91,8 +89,6 @@
510C418524E5D1B4008226FD /* ExtensionContainers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87623F22B8200032075 /* ExtensionContainers.swift */; };
510C418624E5D1B4008226FD /* ExtensionFeedAddRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51B5C87A23F2317700032075 /* ExtensionFeedAddRequest.swift */; };
51102165233A7D6C0007A5F7 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51102164233A7D6C0007A5F7 /* ArticleExtractorButton.swift */; };
- 51107746243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51107745243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift */; };
- 51107747243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51107745243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift */; };
51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */; };
5117715524E1EA0F00A2A836 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5117715424E1EA0F00A2A836 /* ArticleExtractorButton.swift */; };
5117715624E1EA0F00A2A836 /* ArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5117715424E1EA0F00A2A836 /* ArticleExtractorButton.swift */; };
@@ -183,10 +179,6 @@
514C16E124D2EF38009A3AFA /* RSCoreResources in Frameworks */ = {isa = PBXBuildFile; productRef = 514C16E024D2EF38009A3AFA /* RSCoreResources */; };
5153A35428DC5CEB0036C545 /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = DF2A8F32289BFBD9002455AD /* RSCore */; };
5154368B229404D1005E1CDF /* FaviconGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51EF0F76227716200050506E /* FaviconGenerator.swift */; };
- 515A5148243E64BA0089E588 /* ExtensionPointEnableWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515A5147243E64BA0089E588 /* ExtensionPointEnableWindowController.swift */; };
- 515A5149243E64BA0089E588 /* ExtensionPointEnableWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515A5147243E64BA0089E588 /* ExtensionPointEnableWindowController.swift */; };
- 515A5171243E802B0089E588 /* ExtensionPointDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515A5170243E802B0089E588 /* ExtensionPointDetailViewController.swift */; };
- 515A5172243E802B0089E588 /* ExtensionPointDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 515A5170243E802B0089E588 /* ExtensionPointDetailViewController.swift */; };
515D4FCA23257CB500EE1167 /* Node-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 849A97971ED9EFAA007D329B /* Node-Extensions.swift */; };
515D4FCC2325815A00EE1167 /* SafariExt.js in Resources */ = {isa = PBXBuildFile; fileRef = 515D4FCB2325815A00EE1167 /* SafariExt.js */; };
51627A6723861DA3007B3B4B /* MasterFeedViewController+Drag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51627A6623861DA3007B3B4B /* MasterFeedViewController+Drag.swift */; };
@@ -208,8 +200,6 @@
5183CCE5226F4DFA0010922C /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; };
5183CCE6226F4E110010922C /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; };
5183CCE8226F68D90010922C /* AccountRefreshTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE7226F68D90010922C /* AccountRefreshTimer.swift */; };
- 5183CFAF254C78C8006B83A5 /* EnableExtensionPointView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CFAE254C78C8006B83A5 /* EnableExtensionPointView.swift */; };
- 5183CFB0254C78C8006B83A5 /* EnableExtensionPointView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CFAE254C78C8006B83A5 /* EnableExtensionPointView.swift */; };
518651B223555EB20078E021 /* NNW3Document.swift in Sources */ = {isa = PBXBuildFile; fileRef = 518651AB23555EB20078E021 /* NNW3Document.swift */; };
518651DA235621840078E021 /* ImageTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 518651D9235621840078E021 /* ImageTransition.swift */; };
51868BF1254386630011A17B /* SidebarDeleteItemsAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51868BF0254386630011A17B /* SidebarDeleteItemsAlert.swift */; };
@@ -799,8 +789,6 @@
DF5124EC2A23109900BBAB1F /* AccountsNewsBlur.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5124EE2A23109900BBAB1F /* AccountsNewsBlur.xib */; };
DF5124F12A2310A100BBAB1F /* AccountsReaderAPI.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5124F42A2310A100BBAB1F /* AccountsReaderAPI.xib */; };
DF5124F22A2310A100BBAB1F /* AccountsReaderAPI.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5124F42A2310A100BBAB1F /* AccountsReaderAPI.xib */; };
- DF5124F72A2310AC00BBAB1F /* ExtensionPointDetail.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5124FA2A2310AC00BBAB1F /* ExtensionPointDetail.xib */; };
- DF5124F82A2310AC00BBAB1F /* ExtensionPointDetail.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5124FA2A2310AC00BBAB1F /* ExtensionPointDetail.xib */; };
DF5124FD2A23110F00BBAB1F /* CrashReporterWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5125002A23110F00BBAB1F /* CrashReporterWindow.xib */; };
DF5124FE2A23110F00BBAB1F /* CrashReporterWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5125002A23110F00BBAB1F /* CrashReporterWindow.xib */; };
DF5125032A23116B00BBAB1F /* MasterTimelineTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = DF5125052A23116B00BBAB1F /* MasterTimelineTitleView.xib */; };
@@ -1133,7 +1121,6 @@
1701E1B62568983D009453D8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; };
17071EEF26F8137400F5E71D /* ArticleTheme+Notifications.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ArticleTheme+Notifications.swift"; sourceTree = ""; };
1710B9122552354E00679C0D /* AddAccountHelpView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAccountHelpView.swift; sourceTree = ""; };
- 1710B928255246F900679C0D /* EnableExtensionPointHelpView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnableExtensionPointHelpView.swift; sourceTree = ""; };
17192AE12567B3FE00AAEACA /* org.sparkle-project.Downloader.xpc */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.xpc-service"; path = "org.sparkle-project.Downloader.xpc"; sourceTree = ""; };
17192AE22567B3FE00AAEACA /* org.sparkle-project.InstallerConnection.xpc */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.xpc-service"; path = "org.sparkle-project.InstallerConnection.xpc"; sourceTree = ""; };
17192AE32567B3FE00AAEACA /* org.sparkle-project.InstallerLauncher.xpc */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.xpc-service"; path = "org.sparkle-project.InstallerLauncher.xpc"; sourceTree = ""; };
@@ -1179,7 +1166,6 @@
510C416624E5CDE3008226FD /* ShareExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareExtension.entitlements; sourceTree = ""; };
510C418724E5D2E3008226FD /* NetNewsWire_shareextension_target.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetNewsWire_shareextension_target.xcconfig; sourceTree = ""; };
51102164233A7D6C0007A5F7 /* ArticleExtractorButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleExtractorButton.swift; sourceTree = ""; };
- 51107745243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionPointPreferencesViewController.swift; sourceTree = ""; };
51121AA12265430A00BC0EC1 /* NetNewsWire_iOSapp_target.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = NetNewsWire_iOSapp_target.xcconfig; sourceTree = ""; };
51126DA3225FDE2F00722696 /* RSImage-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RSImage-Extensions.swift"; sourceTree = ""; };
5117715424E1EA0F00A2A836 /* ArticleExtractorButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleExtractorButton.swift; sourceTree = ""; };
@@ -1219,8 +1205,6 @@
5144EA4F227B8E4500D19003 /* AccountsFeedbinWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsFeedbinWindowController.swift; sourceTree = ""; };
5148F4542336DB7000F8CD8B /* MasterTimelineTitleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterTimelineTitleView.swift; sourceTree = ""; };
514B7C8223205EFB00BAC947 /* RootSplitViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootSplitViewController.swift; sourceTree = ""; };
- 515A5147243E64BA0089E588 /* ExtensionPointEnableWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionPointEnableWindowController.swift; sourceTree = ""; };
- 515A5170243E802B0089E588 /* ExtensionPointDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionPointDetailViewController.swift; sourceTree = ""; };
515D4FCB2325815A00EE1167 /* SafariExt.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = SafariExt.js; sourceTree = ""; };
515D4FCD2325909200EE1167 /* NetNewsWire_iOS_ShareExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NetNewsWire_iOS_ShareExtension.entitlements; sourceTree = ""; };
515D4FCE2325B3D000EE1167 /* NetNewsWire_iOSshareextension_target.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = NetNewsWire_iOSshareextension_target.xcconfig; sourceTree = ""; };
@@ -1236,7 +1220,6 @@
5183CCD9226E31A50010922C /* NonIntrinsicImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NonIntrinsicImageView.swift; sourceTree = ""; };
5183CCE4226F4DFA0010922C /* RefreshInterval.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshInterval.swift; sourceTree = ""; };
5183CCE7226F68D90010922C /* AccountRefreshTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountRefreshTimer.swift; sourceTree = ""; };
- 5183CFAE254C78C8006B83A5 /* EnableExtensionPointView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnableExtensionPointView.swift; sourceTree = ""; };
518651AB23555EB20078E021 /* NNW3Document.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NNW3Document.swift; sourceTree = ""; };
518651D9235621840078E021 /* ImageTransition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageTransition.swift; sourceTree = ""; };
51868BF0254386630011A17B /* SidebarDeleteItemsAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarDeleteItemsAlert.swift; sourceTree = ""; };
@@ -1559,7 +1542,6 @@
C4A3967C2A2AEC5400C89D55 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/NNW3OpenPanelAccessoryView.strings"; sourceTree = ""; };
C4A3967D2A2AEC5400C89D55 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/ExportOPMLSheet.strings"; sourceTree = ""; };
C4A3967E2A2AEC5400C89D55 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/ImportOPMLSheet.strings"; sourceTree = ""; };
- C4A3967F2A2AEC5400C89D55 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/ExtensionPointDetail.strings"; sourceTree = ""; };
C5A6ED5123C9AF4300AB6BE2 /* TitleActivityItemSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleActivityItemSource.swift; sourceTree = ""; };
C5A6ED6C23C9B0C800AB6BE2 /* UIActivityViewController-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIActivityViewController-Extensions.swift"; sourceTree = ""; };
D3555BF324664539005E48C3 /* ArticleSearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleSearchBar.swift; sourceTree = ""; };
@@ -1611,8 +1593,6 @@
DF5124F02A23109C00BBAB1F /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/AccountsNewsBlur.strings"; sourceTree = ""; };
DF5124F32A2310A100BBAB1F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/AccountsReaderAPI.xib; sourceTree = ""; };
DF5124F62A2310A500BBAB1F /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/AccountsReaderAPI.strings"; sourceTree = ""; };
- DF5124F92A2310AC00BBAB1F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ExtensionPointDetail.xib; sourceTree = ""; };
- DF5124FC2A2310AF00BBAB1F /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/ExtensionPointDetail.strings"; sourceTree = ""; };
DF5124FF2A23110F00BBAB1F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/CrashReporterWindow.xib; sourceTree = ""; };
DF5125022A23111200BBAB1F /* en-GB */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "en-GB"; path = "en-GB.lproj/CrashReporterWindow.strings"; sourceTree = ""; };
DF5125042A23116B00BBAB1F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MasterTimelineTitleView.xib; sourceTree = ""; };
@@ -1917,19 +1897,6 @@
path = ExtensionPoints;
sourceTree = "";
};
- 51107744243BEDD300D97C8C /* ExtensionPoints */ = {
- isa = PBXGroup;
- children = (
- 5183CFAE254C78C8006B83A5 /* EnableExtensionPointView.swift */,
- 1710B928255246F900679C0D /* EnableExtensionPointHelpView.swift */,
- DF5124FA2A2310AC00BBAB1F /* ExtensionPointDetail.xib */,
- 515A5170243E802B0089E588 /* ExtensionPointDetailViewController.swift */,
- 515A5147243E64BA0089E588 /* ExtensionPointEnableWindowController.swift */,
- 51107745243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift */,
- );
- path = ExtensionPoints;
- sourceTree = "";
- };
511D43CE231FA51100FB1562 /* Resources */ = {
isa = PBXGroup;
children = (
@@ -2668,7 +2635,6 @@
84C9FC6A22629E1200D921D6 /* Advanced */,
84C9FC6C22629E1200D921D6 /* General */,
84C9FC6F22629E1200D921D6 /* Accounts */,
- 51107744243BEDD300D97C8C /* ExtensionPoints */,
);
path = Preferences;
sourceTree = "";
@@ -3559,7 +3525,6 @@
65ED4067235DEF6C0081F399 /* page.html in Resources */,
65ED4068235DEF6C0081F399 /* MainWindow.storyboard in Resources */,
DF5124EC2A23109900BBAB1F /* AccountsNewsBlur.xib in Resources */,
- DF5124F82A2310AC00BBAB1F /* ExtensionPointDetail.xib in Resources */,
DF5124F22A2310A100BBAB1F /* AccountsReaderAPI.xib in Resources */,
65ED406A235DEF6C0081F399 /* newsfoot.js in Resources */,
5103A9992421643300410853 /* blank.html in Resources */,
@@ -3668,7 +3633,6 @@
DF5124EB2A23109900BBAB1F /* AccountsNewsBlur.xib in Resources */,
5103A9982421643300410853 /* blank.html in Resources */,
DF93DB2B296A319000586C0E /* Localizable.stringsdict in Resources */,
- DF5124F72A2310AC00BBAB1F /* ExtensionPointDetail.xib in Resources */,
DF5124FD2A23110F00BBAB1F /* CrashReporterWindow.xib in Resources */,
51DEE81226FB9233006DAA56 /* Appanoose.nnwtheme in Resources */,
84C9FC8E22629E8F00D921D6 /* Credits.rtf in Resources */,
@@ -3978,7 +3942,6 @@
files = (
65ED3FB7235DEF6C0081F399 /* ArticleArray.swift in Sources */,
65ED3FB8235DEF6C0081F399 /* CrashReporter.swift in Sources */,
- 51107747243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift in Sources */,
65ED3FB9235DEF6C0081F399 /* IconView.swift in Sources */,
65ED3FBB235DEF6C0081F399 /* InspectorWindowController.swift in Sources */,
65ED3FBC235DEF6C0081F399 /* ColorHash.swift in Sources */,
@@ -3986,7 +3949,6 @@
65ED3FBE235DEF6C0081F399 /* Account+Scriptability.swift in Sources */,
65ED3FBF235DEF6C0081F399 /* NothingInspectorViewController.swift in Sources */,
DF3630EC2936183D00326FB8 /* OPMLDocument.swift in Sources */,
- 1710B92A255246F900679C0D /* EnableExtensionPointHelpView.swift in Sources */,
51927A0528E28D1C000AE856 /* MainWindow.swift in Sources */,
65ED3FC0235DEF6C0081F399 /* AppNotifications.swift in Sources */,
65ED3FC1235DEF6C0081F399 /* TimelineKeyboardDelegate.swift in Sources */,
@@ -3997,7 +3959,6 @@
65ED3FC6235DEF6C0081F399 /* UnreadFeed.swift in Sources */,
65ED3FC8235DEF6C0081F399 /* SidebarCellLayout.swift in Sources */,
65ED3FC9235DEF6C0081F399 /* SmartFeedPasteboardWriter.swift in Sources */,
- 515A5149243E64BA0089E588 /* ExtensionPointEnableWindowController.swift in Sources */,
65ED3FCA235DEF6C0081F399 /* SmartFeedsController.swift in Sources */,
65ED3FCB235DEF6C0081F399 /* SidebarViewController.swift in Sources */,
51BC4B00247277E0000A6ED8 /* URL-Extensions.swift in Sources */,
@@ -4009,11 +3970,9 @@
65ED3FD3235DEF6C0081F399 /* NSScriptCommand+NetNewsWire.swift in Sources */,
B2C12C6728F4C46800373730 /* URLPasteboardWriter+NetNewsWire.swift in Sources */,
65ED3FD4235DEF6C0081F399 /* Article+Scriptability.swift in Sources */,
- 515A5172243E802B0089E588 /* ExtensionPointDetailViewController.swift in Sources */,
65ED3FD5235DEF6C0081F399 /* SmartFeed.swift in Sources */,
65ED3FD6235DEF6C0081F399 /* MarkStatusCommand.swift in Sources */,
DFBB4EAD2951BC0200639228 /* NNWThemeDocument.swift in Sources */,
- 5183CFB0254C78C8006B83A5 /* EnableExtensionPointView.swift in Sources */,
65ED3FD7235DEF6C0081F399 /* NSApplication+Scriptability.swift in Sources */,
65ED3FD8235DEF6C0081F399 /* NSView-Extensions.swift in Sources */,
51A052CF244FB9D7006C2024 /* AddFeedWIndowController.swift in Sources */,
@@ -4352,7 +4311,6 @@
files = (
84F204E01FAACBB30076E152 /* ArticleArray.swift in Sources */,
848B937221C8C5540038DC0D /* CrashReporter.swift in Sources */,
- 515A5171243E802B0089E588 /* ExtensionPointDetailViewController.swift in Sources */,
847CD6CA232F4CBF00FAC46D /* IconView.swift in Sources */,
B2C12C6628F4C46800373730 /* URLPasteboardWriter+NetNewsWire.swift in Sources */,
84BBB12E20142A4700F054F5 /* InspectorWindowController.swift in Sources */,
@@ -4388,7 +4346,6 @@
D5907D7F2004AC00005947E5 /* NSApplication+Scriptability.swift in Sources */,
8405DD9C22153BD7008CE1BF /* NSView-Extensions.swift in Sources */,
849A979F1ED9F130007D329B /* SidebarCell.swift in Sources */,
- 1710B929255246F900679C0D /* EnableExtensionPointHelpView.swift in Sources */,
51E595A5228CC36500FCC42B /* ArticleStatusSyncTimer.swift in Sources */,
849A97651ED9EB96007D329B /* WebFeedTreeControllerDelegate.swift in Sources */,
849A97671ED9EB96007D329B /* UnreadCountView.swift in Sources */,
@@ -4417,10 +4374,8 @@
51BC4AFF247277E0000A6ED8 /* URL-Extensions.swift in Sources */,
849A978A1ED9ECEF007D329B /* ArticleThemesManager.swift in Sources */,
8405DD8A2213E0E3008CE1BF /* DetailContainerView.swift in Sources */,
- 51107746243BEE2500D97C8C /* ExtensionPointPreferencesViewController.swift in Sources */,
519B8D332143397200FA689C /* SharingServiceDelegate.swift in Sources */,
FF3ABF1523259DDB0074C542 /* ArticleSorter.swift in Sources */,
- 5183CFAF254C78C8006B83A5 /* EnableExtensionPointView.swift in Sources */,
84E8E0DB202EC49300562D8F /* TimelineViewController+ContextualMenus.swift in Sources */,
849A97791ED9EC04007D329B /* ArticleStringFormatter.swift in Sources */,
B24E9ADC245AB88400DA5718 /* NSAttributedString+NetNewsWire.swift in Sources */,
@@ -4432,7 +4387,6 @@
55E15BCC229D65A900D6602A /* AccountsReaderAPIWindowController.swift in Sources */,
5144EA382279FC6200D19003 /* AccountsAddLocalWindowController.swift in Sources */,
84AD1EAA2031617300BC20B7 /* PasteboardFolder.swift in Sources */,
- 515A5148243E64BA0089E588 /* ExtensionPointEnableWindowController.swift in Sources */,
51DC07982552083500A3F79F /* ArticleTextSize.swift in Sources */,
5117715524E1EA0F00A2A836 /* ArticleExtractorButton.swift in Sources */,
5103A9F724225E4C00410853 /* AccountsAddCloudKitWindowController.swift in Sources */,
@@ -4850,16 +4804,6 @@
name = AccountsReaderAPI.xib;
sourceTree = "";
};
- DF5124FA2A2310AC00BBAB1F /* ExtensionPointDetail.xib */ = {
- isa = PBXVariantGroup;
- children = (
- DF5124F92A2310AC00BBAB1F /* Base */,
- DF5124FC2A2310AF00BBAB1F /* en-GB */,
- C4A3967F2A2AEC5400C89D55 /* zh-Hans */,
- );
- name = ExtensionPointDetail.xib;
- sourceTree = "";
- };
DF5125002A23110F00BBAB1F /* CrashReporterWindow.xib */ = {
isa = PBXVariantGroup;
children = (