From 8707a713137214aed8de71823c15d7b7ac9e35a8 Mon Sep 17 00:00:00 2001 From: Rob Mathers Date: Sat, 1 May 2021 16:47:39 -0400 Subject: [PATCH 001/169] Add Copy Article URL & Copy External URL Menu Items The Mac items display in the edit and contextual menus, and in the iOS contextual menu for an article. --- Mac/Base.lproj/Main.storyboard | 12 ++++++++ Mac/MainWindow/MainWindowController.swift | 28 +++++++++++++++++ ...melineViewController+ContextualMenus.swift | 22 ++++++++++++++ .../MasterTimelineViewController.swift | 30 +++++++++++++++++++ 4 files changed, 92 insertions(+) diff --git a/Mac/Base.lproj/Main.storyboard b/Mac/Base.lproj/Main.storyboard index a1f665aa2..1de711d58 100644 --- a/Mac/Base.lproj/Main.storyboard +++ b/Mac/Base.lproj/Main.storyboard @@ -157,6 +157,18 @@ + + + + + + + + + + + + diff --git a/Mac/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift index fe988889e..46472b1fe 100644 --- a/Mac/MainWindow/MainWindowController.swift +++ b/Mac/MainWindow/MainWindowController.swift @@ -188,6 +188,14 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { public func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool { + if item.action == #selector(copyArticleURL(_:)) { + return canCopyArticleURL() + } + + if item.action == #selector(copyExternalURL(_:)) { + return canCopyExternalURL() + } + if item.action == #selector(openArticleInBrowser(_:)) { if let item = item as? NSMenuItem, item.keyEquivalentModifierMask.contains(.shift) { item.title = Browser.titleForOpenInBrowserInverted @@ -286,6 +294,18 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { } + @IBAction func copyArticleURL(_ sender: Any?) { + if let link = currentLink { + URLPasteboardWriter.write(urlString: link, to: .general) + } + } + + @IBAction func copyExternalURL(_ sender: Any?) { + if let link = oneSelectedArticle?.externalURL { + URLPasteboardWriter.write(urlString: link, to: .general) + } + } + @IBAction func openArticleInBrowser(_ sender: Any?) { if let link = currentLink { Browser.open(link, invertPreference: NSApp.currentEvent?.modifierFlags.contains(.shift) ?? false) @@ -1007,6 +1027,14 @@ private extension MainWindowController { } // MARK: - Command Validation + + func canCopyArticleURL() -> Bool { + return currentLink != nil + } + + func canCopyExternalURL() -> Bool { + return oneSelectedArticle?.externalURL != nil && oneSelectedArticle?.externalURL != currentLink + } func canGoToNextUnread(wrappingToTop wrapping: Bool = false) -> Bool { diff --git a/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift b/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift index 1df39dca4..da56e31f3 100644 --- a/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift +++ b/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift @@ -90,6 +90,13 @@ extension TimelineViewController { } Browser.open(urlString, inBackground: false) } + + @objc func copyURLFromContextualMenu(_ sender: Any?) { + guard let menuItem = sender as? NSMenuItem, let urlString = menuItem.representedObject as? String else { + return + } + URLPasteboardWriter.write(urlString: urlString, to: .general) + } @objc func performShareServiceFromContextualMenu(_ sender: Any?) { guard let menuItem = sender as? NSMenuItem, let sharingCommandInfo = menuItem.representedObject as? SharingCommandInfo else { @@ -168,6 +175,12 @@ private extension TimelineViewController { if articles.count == 1, let link = articles.first!.preferredLink { menu.addSeparatorIfNeeded() menu.addItem(openInBrowserMenuItem(link)) + menu.addSeparatorIfNeeded() + menu.addItem(copyArticleURLMenuItem(link)) + + if let externalLink = articles.first?.externalURL, externalLink != link { + menu.addItem(copyExternalURLMenuItem(externalLink)) + } } if let sharingMenu = shareMenu(for: articles) { @@ -260,6 +273,15 @@ private extension TimelineViewController { return menuItem(NSLocalizedString("Open in Browser", comment: "Command"), #selector(openInBrowserFromContextualMenu(_:)), urlString) } + + func copyArticleURLMenuItem(_ urlString: String) -> NSMenuItem { + return menuItem(NSLocalizedString("Copy Article URL", comment: "Command"), #selector(copyURLFromContextualMenu(_:)), urlString) + } + + func copyExternalURLMenuItem(_ urlString: String) -> NSMenuItem { + return menuItem(NSLocalizedString("Copy External URL", comment: "Command"), #selector(copyURLFromContextualMenu(_:)), urlString) + } + func menuItem(_ title: String, _ action: Selector, _ representedObject: Any) -> NSMenuItem { diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 00caab70a..7ee7351cc 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -362,6 +362,17 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner menuElements.append(UIMenu(title: "", options: .displayInline, children: secondaryActions)) } + var copyActions = [UIAction]() + if let action = self.copyArticleURLAction(article) { + copyActions.append(action) + } + if let action = self.copyExternalURLAction(article) { + copyActions.append(action) + } + if !copyActions.isEmpty { + menuElements.append(UIMenu(title: "", options: .displayInline, children: copyActions)) + } + if let action = self.openInBrowserAction(article) { menuElements.append(UIMenu(title: "", options: .displayInline, children: [action])) } @@ -887,6 +898,25 @@ private extension MasterTimelineViewController { } return action } + + func copyArticleURLAction(_ article: Article) -> UIAction? { + guard let preferredLink = article.preferredLink, let url = URL(string: preferredLink) else { return nil } + let title = NSLocalizedString("Copy Article URL", comment: "Copy Article URL") + let action = UIAction(title: title, image: AppAssets.copyImage) { action in + UIPasteboard.general.url = url + } + return action + } + + func copyExternalURLAction(_ article: Article) -> UIAction? { + guard let externalURL = article.externalURL, externalURL != article.preferredLink, let url = URL(string: externalURL) else { return nil } + let title = NSLocalizedString("Copy External URL", comment: "Copy External URL") + let action = UIAction(title: title, image: AppAssets.copyImage) { action in + UIPasteboard.general.url = url + } + return action + } + func openInBrowserAction(_ article: Article) -> UIAction? { guard let preferredLink = article.preferredLink, let _ = URL(string: preferredLink) else { From 86ca3972211635de8d883327b52424dedf4fc98e Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 23 Jun 2021 02:44:34 -0500 Subject: [PATCH 002/169] Ignore key commands when the web view has focus. Fixes #3179 --- iOS/MasterFeed/MasterFeedViewController.swift | 6 ++++++ iOS/MasterTimeline/MasterTimelineViewController.swift | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 6233bf2b6..807d9c955 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -35,6 +35,12 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { private let keyboardManager = KeyboardManager(type: .sidebar) override var keyCommands: [UIKeyCommand]? { + + // If the first responder is the WKWebView (PreloadedWebView) we don't want to supply any keyboard + // commands that the system is looking for by going up the responder chain. They will interfere with + // the WKWebViews built in hardware keyboard shortcuts, specifically the up and down arrow keys. + guard let current = UIResponder.currentFirstResponder, !(current is PreloadedWebView) else { return nil } + return keyboardManager.keyCommands } diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 1a99608bd..9cc5a6152 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -33,6 +33,12 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner private let keyboardManager = KeyboardManager(type: .timeline) override var keyCommands: [UIKeyCommand]? { + + // If the first responder is the WKWebView (PreloadedWebView) we don't want to supply any keyboard + // commands that the system is looking for by going up the responder chain. They will interfere with + // the WKWebViews built in hardware keyboard shortcuts, specifically the up and down arrow keys. + guard let current = UIResponder.currentFirstResponder, !(current is PreloadedWebView) else { return nil } + return keyboardManager.keyCommands } From c2413cda37d56655a7cb9bf4b31bb9b2da811ba2 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 23 Jun 2021 03:24:23 -0500 Subject: [PATCH 003/169] Restore alpha of the indicators to 1 incase the animation completion handler doesn't get called. Fixes #3156 --- iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift b/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift index 49b9f9ae8..2ec879473 100644 --- a/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift +++ b/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift @@ -229,12 +229,13 @@ private extension MasterTimelineTableViewCell { } unreadIndicatorPropertyAnimator?.startAnimation() } else { + unreadIndicatorView.alpha = 1 showOrHideView(unreadIndicatorView, cellData.read || cellData.starred) } } func updateStarView() { - if !starView.isHidden && cellData.read && !cellData.starred { + if !starView.isHidden && cellData.read && !cellData.starred { starViewPropertyAnimator = UIViewPropertyAnimator(duration: 0.66, curve: .easeInOut) { [weak self] in self?.starView.alpha = 0 } @@ -245,6 +246,7 @@ private extension MasterTimelineTableViewCell { } starViewPropertyAnimator?.startAnimation() } else { + starView.alpha = 1 showOrHideView(starView, !cellData.starred) } } From 31af975174d29470f96c38dc8530afcdb333c479 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 24 Jun 2021 07:49:13 +0800 Subject: [PATCH 004/169] applies fullWidth to accounts --- Mac/Base.lproj/Preferences.storyboard | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard index ddd693d02..b9ad21c4b 100644 --- a/Mac/Base.lproj/Preferences.storyboard +++ b/Mac/Base.lproj/Preferences.storyboard @@ -412,7 +412,7 @@ - + From 1bda0c37346b87caa3facd18b74ffa0553fee2af Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 24 Jun 2021 07:50:23 +0800 Subject: [PATCH 005/169] adds full width to extensions --- Mac/Base.lproj/Preferences.storyboard | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard index b9ad21c4b..d22ee1785 100644 --- a/Mac/Base.lproj/Preferences.storyboard +++ b/Mac/Base.lproj/Preferences.storyboard @@ -583,7 +583,7 @@ - + From 534016bf800dbae71d843c1508d64befafb7fba0 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 26 Jun 2021 14:22:04 -0500 Subject: [PATCH 006/169] Update to latest RSCore. Fixes #3199 --- .../xcshareddata/swiftpm/Package.resolved | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index b58a85312..62d557ca1 100644 --- a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Thomvis/BrightFutures.git", "state": { "branch": null, - "revision": "9279defa6bdc21501ce740266e5a14d0119ddc63", - "version": "8.0.1" + "revision": "939858b811026f85e87847a808f0bea2f187e5c4", + "version": "8.1.0" } }, { @@ -51,8 +51,8 @@ "repositoryURL": "https://github.com/microsoft/plcrashreporter.git", "state": { "branch": null, - "revision": "de6b8f9db4b2a0aa859a5507550a70548e4da936", - "version": "1.8.1" + "revision": "d747ab5de269cd44022bbe96ff9609d8626694ab", + "version": "1.9.0" } }, { @@ -60,8 +60,8 @@ "repositoryURL": "https://github.com/Ranchero-Software/RSCore.git", "state": { "branch": null, - "revision": "2a13519b4d91843faa6aff4245b0e387dc64eafe", - "version": "1.0.6" + "revision": "060b12a3d3b6d27d57b2fae84160bfec91ec7118", + "version": "1.0.7" } }, { From 83b349925faa53fdb2ef40cadab309be4a0f66ad Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 26 Jun 2021 14:23:40 -0500 Subject: [PATCH 007/169] Update to latest RSCore. Fixes #3199 --- .../xcshareddata/swiftpm/Package.resolved | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index b58a85312..62d557ca1 100644 --- a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Thomvis/BrightFutures.git", "state": { "branch": null, - "revision": "9279defa6bdc21501ce740266e5a14d0119ddc63", - "version": "8.0.1" + "revision": "939858b811026f85e87847a808f0bea2f187e5c4", + "version": "8.1.0" } }, { @@ -51,8 +51,8 @@ "repositoryURL": "https://github.com/microsoft/plcrashreporter.git", "state": { "branch": null, - "revision": "de6b8f9db4b2a0aa859a5507550a70548e4da936", - "version": "1.8.1" + "revision": "d747ab5de269cd44022bbe96ff9609d8626694ab", + "version": "1.9.0" } }, { @@ -60,8 +60,8 @@ "repositoryURL": "https://github.com/Ranchero-Software/RSCore.git", "state": { "branch": null, - "revision": "2a13519b4d91843faa6aff4245b0e387dc64eafe", - "version": "1.0.6" + "revision": "060b12a3d3b6d27d57b2fae84160bfec91ec7118", + "version": "1.0.7" } }, { From b5492931676c19d73c2b0eeb429b8c43f060df5d Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 26 Jun 2021 18:15:05 -0500 Subject: [PATCH 008/169] Upgrade to latest RSWeb. Fixes #3202 --- .../project.xcworkspace/xcshareddata/swiftpm/Package.resolved | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 62d557ca1..79c1e198c 100644 --- a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -96,8 +96,8 @@ "repositoryURL": "https://github.com/Ranchero-Software/RSWeb.git", "state": { "branch": null, - "revision": "2f9ad98736c5c17dfb2be0b3cc06e71a49b061fa", - "version": "1.0.1" + "revision": "b27837aaa7163a8ed002fed52965a350aa868013", + "version": "1.0.2" } }, { From 2862d4066333b7d3b2ba466d6748e81128dde5e1 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 26 Jun 2021 18:15:37 -0500 Subject: [PATCH 009/169] Upgrade to latest RSWeb. Fixes #3202 --- .../project.xcworkspace/xcshareddata/swiftpm/Package.resolved | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 62d557ca1..79c1e198c 100644 --- a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -96,8 +96,8 @@ "repositoryURL": "https://github.com/Ranchero-Software/RSWeb.git", "state": { "branch": null, - "revision": "2f9ad98736c5c17dfb2be0b3cc06e71a49b061fa", - "version": "1.0.1" + "revision": "b27837aaa7163a8ed002fed52965a350aa868013", + "version": "1.0.2" } }, { From 100823e57ee49fb20785aa8ff1240326cc5dcafb Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 26 Jun 2021 20:54:17 -0500 Subject: [PATCH 010/169] Make sure we don't use negative oftsets when finding an index. Fixes #3204 --- .../Sources/Account/FeedProvider/Twitter/TwitterStatus.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift index 149814667..0e86168fb 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -91,8 +91,8 @@ private extension TwitterStatus { } } - let offsetStartIndex = entity.startIndex - unicodeScalarOffset - let offsetEndIndex = entity.endIndex - unicodeScalarOffset + let offsetStartIndex = unicodeScalarOffset < entity.startIndex ? entity.startIndex - unicodeScalarOffset : entity.startIndex + let offsetEndIndex = unicodeScalarOffset < entity.endIndex ? entity.endIndex - unicodeScalarOffset : entity.endIndex let entityStartIndex = text.index(text.startIndex, offsetBy: offsetStartIndex, limitedBy: text.endIndex) ?? text.startIndex let entityEndIndex = text.index(text.startIndex, offsetBy: offsetEndIndex, limitedBy: text.endIndex) ?? text.endIndex From 17cc23364d0730acdf4dc84e9efdb63bfdd90155 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 26 Jun 2021 20:54:17 -0500 Subject: [PATCH 011/169] Make sure we don't use negative oftsets when finding an index. Fixes #3204 --- .../Sources/Account/FeedProvider/Twitter/TwitterStatus.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift index 149814667..0e86168fb 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -91,8 +91,8 @@ private extension TwitterStatus { } } - let offsetStartIndex = entity.startIndex - unicodeScalarOffset - let offsetEndIndex = entity.endIndex - unicodeScalarOffset + let offsetStartIndex = unicodeScalarOffset < entity.startIndex ? entity.startIndex - unicodeScalarOffset : entity.startIndex + let offsetEndIndex = unicodeScalarOffset < entity.endIndex ? entity.endIndex - unicodeScalarOffset : entity.endIndex let entityStartIndex = text.index(text.startIndex, offsetBy: offsetStartIndex, limitedBy: text.endIndex) ?? text.startIndex let entityEndIndex = text.index(text.startIndex, offsetBy: offsetEndIndex, limitedBy: text.endIndex) ?? text.endIndex From c10aa8412bd0e90eb4f47f8dc027cba8cb27e44b Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Mon, 5 Jul 2021 14:24:50 -0500 Subject: [PATCH 012/169] Changed how images are placed in Twitter articles so that you can better see who Tweeted the image. --- .../FeedProvider/Twitter/TwitterStatus.swift | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift index 0e86168fb..275d4b354 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -48,7 +48,7 @@ final class TwitterStatus: Codable { func renderAsHTML(topLevel: Bool = true) -> String { if let retweetedStatus = retweetedStatus { - return renderAsRetweetHTML(retweetedStatus, topLevel: topLevel) + return renderAsRetweetHTML(retweetedStatus) } if let quotedStatus = quotedStatus { return renderAsQuoteHTML(quotedStatus, topLevel: topLevel) @@ -139,26 +139,17 @@ private extension TwitterStatus { func renderAsOriginalHTML(topLevel: Bool) -> String { var html = renderAsTweetHTML(self, topLevel: topLevel) - if topLevel { - html += extendedEntities?.renderAsHTML() ?? "" - html += retweetedStatus?.extendedEntities?.renderAsHTML() ?? "" - html += quotedStatus?.extendedEntities?.renderAsHTML() ?? "" - } + html += extendedEntities?.renderAsHTML() ?? "" return html } - func renderAsRetweetHTML(_ status: TwitterStatus, topLevel: Bool) -> String { + func renderAsRetweetHTML(_ status: TwitterStatus) -> String { var html = "
" if let userHTML = status.user?.renderAsHTML() { html += userHTML } html += status.renderAsHTML(topLevel: false) html += "
" - if topLevel { - html += status.extendedEntities?.renderAsHTML() ?? "" - html += status.retweetedStatus?.extendedEntities?.renderAsHTML() ?? "" - html += status.quotedStatus?.extendedEntities?.renderAsHTML() ?? "" - } return html } @@ -171,11 +162,6 @@ private extension TwitterStatus { } html += quotedStatus.renderAsHTML(topLevel: false) html += "" - if topLevel { - html += quotedStatus.extendedEntities?.renderAsHTML() ?? "" - html += quotedStatus.retweetedStatus?.extendedEntities?.renderAsHTML() ?? "" - html += quotedStatus.quotedStatus?.extendedEntities?.renderAsHTML() ?? "" - } return html } From c279f92f7987ef6e67952b2abd12eac6c894d523 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Mon, 5 Jul 2021 14:24:50 -0500 Subject: [PATCH 013/169] Changed how images are placed in Twitter articles so that you can better see who Tweeted the image. --- .../FeedProvider/Twitter/TwitterStatus.swift | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift index 0e86168fb..275d4b354 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -48,7 +48,7 @@ final class TwitterStatus: Codable { func renderAsHTML(topLevel: Bool = true) -> String { if let retweetedStatus = retweetedStatus { - return renderAsRetweetHTML(retweetedStatus, topLevel: topLevel) + return renderAsRetweetHTML(retweetedStatus) } if let quotedStatus = quotedStatus { return renderAsQuoteHTML(quotedStatus, topLevel: topLevel) @@ -139,26 +139,17 @@ private extension TwitterStatus { func renderAsOriginalHTML(topLevel: Bool) -> String { var html = renderAsTweetHTML(self, topLevel: topLevel) - if topLevel { - html += extendedEntities?.renderAsHTML() ?? "" - html += retweetedStatus?.extendedEntities?.renderAsHTML() ?? "" - html += quotedStatus?.extendedEntities?.renderAsHTML() ?? "" - } + html += extendedEntities?.renderAsHTML() ?? "" return html } - func renderAsRetweetHTML(_ status: TwitterStatus, topLevel: Bool) -> String { + func renderAsRetweetHTML(_ status: TwitterStatus) -> String { var html = "
" if let userHTML = status.user?.renderAsHTML() { html += userHTML } html += status.renderAsHTML(topLevel: false) html += "
" - if topLevel { - html += status.extendedEntities?.renderAsHTML() ?? "" - html += status.retweetedStatus?.extendedEntities?.renderAsHTML() ?? "" - html += status.quotedStatus?.extendedEntities?.renderAsHTML() ?? "" - } return html } @@ -171,11 +162,6 @@ private extension TwitterStatus { } html += quotedStatus.renderAsHTML(topLevel: false) html += "" - if topLevel { - html += quotedStatus.extendedEntities?.renderAsHTML() ?? "" - html += quotedStatus.retweetedStatus?.extendedEntities?.renderAsHTML() ?? "" - html += quotedStatus.quotedStatus?.extendedEntities?.renderAsHTML() ?? "" - } return html } From e33d624dd8ee167be8409fbd696a4d0944f5ba71 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 6 Jul 2021 16:52:31 -0500 Subject: [PATCH 014/169] Continue processing if we don't find any articles. Fixes #3213 --- .../CloudKit/CloudKitSendStatusOperation.swift | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index 26497e916..459305902 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -74,11 +74,13 @@ private extension CloudKitSendStatusOperation { case .success(let syncStatuses): func stopProcessing() { - if self.showProgress { - self.refreshProgress?.completeTask() + self.database.resetAllSelectedForProcessing { _ in + if self.showProgress { + self.refreshProgress?.completeTask() + } + os_log(.debug, log: self.log, "Done sending article statuses.") + self.operationDelegate?.operationDidComplete(self) } - os_log(.debug, log: self.log, "Done sending article statuses.") - self.operationDelegate?.operationDidComplete(self) } guard syncStatuses.count > 0 else { @@ -130,10 +132,10 @@ private extension CloudKitSendStatusOperation { } // If this happens, we have somehow gotten into a state where we have new status records - // but the articles didn't come back in the fetch. Rather than crashing, we stop processing + // but the articles didn't come back in the fetch. Rather than crashing, we continue processing // and hope that it gets cleared up later. guard !statusUpdates.isEmpty else { - done(true) + done(false) return } From fd4fd5174ee9377d6a5b44018eea206c1af8aee8 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 6 Jul 2021 16:52:31 -0500 Subject: [PATCH 015/169] Continue processing if we don't find any articles. Fixes #3213 --- .../CloudKit/CloudKitSendStatusOperation.swift | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index 30c983ef2..1979880a4 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -74,11 +74,13 @@ private extension CloudKitSendStatusOperation { case .success(let syncStatuses): func stopProcessing() { - if self.showProgress { - self.refreshProgress?.completeTask() + self.database.resetAllSelectedForProcessing { _ in + if self.showProgress { + self.refreshProgress?.completeTask() + } + os_log(.debug, log: self.log, "Done sending article statuses.") + self.operationDelegate?.operationDidComplete(self) } - os_log(.debug, log: self.log, "Done sending article statuses.") - self.operationDelegate?.operationDidComplete(self) } guard syncStatuses.count > 0 else { @@ -130,10 +132,10 @@ private extension CloudKitSendStatusOperation { } // If this happens, we have somehow gotten into a state where we have new status records - // but the articles didn't come back in the fetch. Rather than crashing, we stop processing + // but the articles didn't come back in the fetch. Rather than crashing, we continue processing // and hope that it gets cleared up later. guard !statusUpdates.isEmpty else { - done(true) + done(false) return } From 3ea427bd2dd62a1946e9a60def3173983f5a8a25 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 6 Jul 2021 18:50:48 -0500 Subject: [PATCH 016/169] Fix open in browser when the article is selected. Fixes #3215 --- iOS/MasterTimeline/MasterTimelineViewController.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 9cc5a6152..ed966c783 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -129,6 +129,15 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner } // MARK: Actions + + @objc func openInBrowser(_ sender: Any?) { + coordinator.showBrowserForCurrentArticle() + } + + @objc func openInAppBrowser(_ sender: Any?) { + coordinator.showInAppBrowser() + } + @IBAction func toggleFilter(_ sender: Any) { coordinator.toggleReadArticlesFilter() } From 1b24140e1ab6b4982600a0a8618e9977d94242ea Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 7 Jul 2021 12:24:21 -0500 Subject: [PATCH 017/169] Remove reset for processing as it was causing an infinite loop in some scenarios. --- .../Account/CloudKit/CloudKitSendStatusOperation.swift | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index 459305902..b469a034e 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -74,13 +74,11 @@ private extension CloudKitSendStatusOperation { case .success(let syncStatuses): func stopProcessing() { - self.database.resetAllSelectedForProcessing { _ in - if self.showProgress { - self.refreshProgress?.completeTask() - } - os_log(.debug, log: self.log, "Done sending article statuses.") - self.operationDelegate?.operationDidComplete(self) + if self.showProgress { + self.refreshProgress?.completeTask() } + os_log(.debug, log: self.log, "Done sending article statuses.") + self.operationDelegate?.operationDidComplete(self) } guard syncStatuses.count > 0 else { From 1096e341d536938909ab916cc53f20135c35ad84 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 7 Jul 2021 12:24:21 -0500 Subject: [PATCH 018/169] Remove reset for processing as it was causing an infinite loop in some scenarios. --- .../Account/CloudKit/CloudKitSendStatusOperation.swift | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index 1979880a4..b8cf00866 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -74,13 +74,11 @@ private extension CloudKitSendStatusOperation { case .success(let syncStatuses): func stopProcessing() { - self.database.resetAllSelectedForProcessing { _ in - if self.showProgress { - self.refreshProgress?.completeTask() - } - os_log(.debug, log: self.log, "Done sending article statuses.") - self.operationDelegate?.operationDidComplete(self) + if self.showProgress { + self.refreshProgress?.completeTask() } + os_log(.debug, log: self.log, "Done sending article statuses.") + self.operationDelegate?.operationDidComplete(self) } guard syncStatuses.count > 0 else { From f47e82f804d7e92bd1d988a883870a00378b77d9 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 8 Jul 2021 13:09:26 -0500 Subject: [PATCH 019/169] Delete orphaned sync status records. --- .../CloudKitSendStatusOperation.swift | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index b469a034e..ecffb9689 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -130,24 +130,26 @@ private extension CloudKitSendStatusOperation { } // If this happens, we have somehow gotten into a state where we have new status records - // but the articles didn't come back in the fetch. Rather than crashing, we continue processing - // and hope that it gets cleared up later. - guard !statusUpdates.isEmpty else { - done(false) - return - } - - articlesZone.modifyArticles(statusUpdates) { result in - switch result { - case .success: - self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) { _ in - done(false) - } - case .failure(let error): - self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in - self.processAccountError(account, error) - os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription) - completion(true) + // but the articles didn't come back in the fetch. We need to clean up those sync records + // and continue processing. + if statusUpdates.isEmpty { + self.database.deleteSelectedForProcessing(articleIDs) { _ in + done(false) + return + } + } else { + articlesZone.modifyArticles(statusUpdates) { result in + switch result { + case .success: + self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) { _ in + done(false) + } + case .failure(let error): + self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in + self.processAccountError(account, error) + os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription) + completion(true) + } } } } From f446a7e2ead1ebd1c103a93b44a227c50a604e3e Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 8 Jul 2021 13:09:26 -0500 Subject: [PATCH 020/169] Delete orphaned sync status records. --- .../CloudKitSendStatusOperation.swift | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index b8cf00866..a1a1f1070 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -130,24 +130,26 @@ private extension CloudKitSendStatusOperation { } // If this happens, we have somehow gotten into a state where we have new status records - // but the articles didn't come back in the fetch. Rather than crashing, we continue processing - // and hope that it gets cleared up later. - guard !statusUpdates.isEmpty else { - done(false) - return - } - - articlesZone.modifyArticles(statusUpdates) { result in - switch result { - case .success: - self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) { _ in - done(false) - } - case .failure(let error): - self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in - self.processAccountError(account, error) - os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription) - completion(true) + // but the articles didn't come back in the fetch. We need to clean up those sync records + // and continue processing. + if statusUpdates.isEmpty { + self.database.deleteSelectedForProcessing(articleIDs) { _ in + done(false) + return + } + } else { + articlesZone.modifyArticles(statusUpdates) { result in + switch result { + case .success: + self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) { _ in + done(false) + } + case .failure(let error): + self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in + self.processAccountError(account, error) + os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription) + completion(true) + } } } } From 634d728ebed00fa2d3f0e3e382ebef69b6bfd8da Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Fri, 9 Jul 2021 11:56:05 -0500 Subject: [PATCH 021/169] Stop processing when we don't return status records. --- .../Account/CloudKit/CloudKitSendStatusOperation.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index ecffb9689..6592ae7c1 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -131,10 +131,10 @@ private extension CloudKitSendStatusOperation { // If this happens, we have somehow gotten into a state where we have new status records // but the articles didn't come back in the fetch. We need to clean up those sync records - // and continue processing. + // and stop processing. if statusUpdates.isEmpty { self.database.deleteSelectedForProcessing(articleIDs) { _ in - done(false) + done(true) return } } else { From 33ecf4ec5bee0ef65ba040ad43bfb0ffffe66992 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Fri, 9 Jul 2021 11:56:05 -0500 Subject: [PATCH 022/169] Stop processing when we don't return status records. --- .../Account/CloudKit/CloudKitSendStatusOperation.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index a1a1f1070..41f42bc4d 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -131,10 +131,10 @@ private extension CloudKitSendStatusOperation { // If this happens, we have somehow gotten into a state where we have new status records // but the articles didn't come back in the fetch. We need to clean up those sync records - // and continue processing. + // and stop processing. if statusUpdates.isEmpty { self.database.deleteSelectedForProcessing(articleIDs) { _ in - done(false) + done(true) return } } else { From 9d6bfc87b01760732755280a5065feb43ecff5e9 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Fri, 16 Jul 2021 14:28:56 -0500 Subject: [PATCH 023/169] Fix crash on iOS 15 --- iOS/UIKit Extensions/CroppingPreviewParameters.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/iOS/UIKit Extensions/CroppingPreviewParameters.swift b/iOS/UIKit Extensions/CroppingPreviewParameters.swift index 58a19dfbf..330ade196 100644 --- a/iOS/UIKit Extensions/CroppingPreviewParameters.swift +++ b/iOS/UIKit Extensions/CroppingPreviewParameters.swift @@ -10,6 +10,10 @@ import UIKit class CroppingPreviewParameters: UIPreviewParameters { + override init() { + super.init() + } + init(view: UIView) { super.init() let newBounds = CGRect(x: 1, y: 1, width: view.bounds.width - 2, height: view.bounds.height - 2) From 8ae2f9583ce4df6ad2b31e18b8217cff3e8a4e19 Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Sun, 18 Jul 2021 17:01:59 -0500 Subject: [PATCH 024/169] Fix favicons when a feed's homepage URL has non-ASCII in its path --- Shared/Favicons/FaviconDownloader.swift | 2 +- Shared/Favicons/FaviconURLFinder.swift | 2 +- Shared/HTMLMetadata/HTMLMetadataDownloader.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Shared/Favicons/FaviconDownloader.swift b/Shared/Favicons/FaviconDownloader.swift index 99d8dd2e6..bda684e43 100644 --- a/Shared/Favicons/FaviconDownloader.swift +++ b/Shared/Favicons/FaviconDownloader.swift @@ -200,7 +200,7 @@ private extension FaviconDownloader { func findFaviconURLs(with homePageURL: String, _ completion: @escaping ([String]?) -> Void) { - guard let url = URL(string: homePageURL) else { + guard let url = URL(unicodeString: homePageURL) else { completion(nil) return } diff --git a/Shared/Favicons/FaviconURLFinder.swift b/Shared/Favicons/FaviconURLFinder.swift index cc429e4c6..dd51da4a5 100644 --- a/Shared/Favicons/FaviconURLFinder.swift +++ b/Shared/Favicons/FaviconURLFinder.swift @@ -42,7 +42,7 @@ struct FaviconURLFinder { /// - urls: An array of favicon URLs as strings. static func findFaviconURLs(with homePageURL: String, _ completion: @escaping (_ urls: [String]?) -> Void) { - guard let _ = URL(string: homePageURL) else { + guard let _ = URL(unicodeString: homePageURL) else { completion(nil) return } diff --git a/Shared/HTMLMetadata/HTMLMetadataDownloader.swift b/Shared/HTMLMetadata/HTMLMetadataDownloader.swift index 40651d420..4f2404868 100644 --- a/Shared/HTMLMetadata/HTMLMetadataDownloader.swift +++ b/Shared/HTMLMetadata/HTMLMetadataDownloader.swift @@ -15,7 +15,7 @@ struct HTMLMetadataDownloader { static let serialDispatchQueue = DispatchQueue(label: "HTMLMetadataDownloader") static func downloadMetadata(for url: String, _ completion: @escaping (RSHTMLMetadata?) -> Void) { - guard let actualURL = URL(string: url) else { + guard let actualURL = URL(unicodeString: url) else { completion(nil) return } From 8bac72e5c08e7c9fec2158aac8f451de315c6582 Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Sun, 18 Jul 2021 17:01:59 -0500 Subject: [PATCH 025/169] Fix favicons when a feed's homepage URL has non-ASCII in its path --- Shared/Favicons/FaviconDownloader.swift | 2 +- Shared/Favicons/FaviconURLFinder.swift | 2 +- Shared/HTMLMetadata/HTMLMetadataDownloader.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Shared/Favicons/FaviconDownloader.swift b/Shared/Favicons/FaviconDownloader.swift index 99d8dd2e6..bda684e43 100644 --- a/Shared/Favicons/FaviconDownloader.swift +++ b/Shared/Favicons/FaviconDownloader.swift @@ -200,7 +200,7 @@ private extension FaviconDownloader { func findFaviconURLs(with homePageURL: String, _ completion: @escaping ([String]?) -> Void) { - guard let url = URL(string: homePageURL) else { + guard let url = URL(unicodeString: homePageURL) else { completion(nil) return } diff --git a/Shared/Favicons/FaviconURLFinder.swift b/Shared/Favicons/FaviconURLFinder.swift index cc429e4c6..dd51da4a5 100644 --- a/Shared/Favicons/FaviconURLFinder.swift +++ b/Shared/Favicons/FaviconURLFinder.swift @@ -42,7 +42,7 @@ struct FaviconURLFinder { /// - urls: An array of favicon URLs as strings. static func findFaviconURLs(with homePageURL: String, _ completion: @escaping (_ urls: [String]?) -> Void) { - guard let _ = URL(string: homePageURL) else { + guard let _ = URL(unicodeString: homePageURL) else { completion(nil) return } diff --git a/Shared/HTMLMetadata/HTMLMetadataDownloader.swift b/Shared/HTMLMetadata/HTMLMetadataDownloader.swift index 40651d420..4f2404868 100644 --- a/Shared/HTMLMetadata/HTMLMetadataDownloader.swift +++ b/Shared/HTMLMetadata/HTMLMetadataDownloader.swift @@ -15,7 +15,7 @@ struct HTMLMetadataDownloader { static let serialDispatchQueue = DispatchQueue(label: "HTMLMetadataDownloader") static func downloadMetadata(for url: String, _ completion: @escaping (RSHTMLMetadata?) -> Void) { - guard let actualURL = URL(string: url) else { + guard let actualURL = URL(unicodeString: url) else { completion(nil) return } From 8080136bb8ab3c3757689d81a1b4d79c11d82acf Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 21 Jul 2021 17:01:57 -0500 Subject: [PATCH 026/169] Make external links span the full width of the article area --- Shared/Article Rendering/ArticleRenderer.swift | 5 +---- Shared/Article Rendering/shared.css | 4 ++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Shared/Article Rendering/ArticleRenderer.swift b/Shared/Article Rendering/ArticleRenderer.swift index a8f8c4e4b..85fc0db30 100644 --- a/Shared/Article Rendering/ArticleRenderer.swift +++ b/Shared/Article Rendering/ArticleRenderer.swift @@ -154,10 +154,7 @@ private extension ArticleRenderer { d["title"] = title if let externalLink = article.externalURL, externalLink != article.preferredLink { - var displayLink = externalLink.strippingHTTPOrHTTPSScheme - if displayLink.count > 27 { - displayLink = displayLink.prefix(27).appending("...") - } + let displayLink = externalLink.strippingHTTPOrHTTPSScheme let regarding = NSLocalizedString("Link", comment: "Link") let externalLinkString = "\(regarding): \(displayLink)" d["external_link"] = externalLinkString diff --git a/Shared/Article Rendering/shared.css b/Shared/Article Rendering/shared.css index 9019d6aee..d14237442 100644 --- a/Shared/Article Rendering/shared.css +++ b/Shared/Article Rendering/shared.css @@ -118,6 +118,10 @@ body > .systemMessage { .externalLink { margin-bottom: 5px; font-style: italic; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .articleBody { From 63e4d2c54e9ab940267c5862f0532eb91c6ee2e6 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 21 Jul 2021 17:01:57 -0500 Subject: [PATCH 027/169] Make external links span the full width of the article area --- Shared/Article Rendering/ArticleRenderer.swift | 5 +---- Shared/Article Rendering/shared.css | 4 ++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Shared/Article Rendering/ArticleRenderer.swift b/Shared/Article Rendering/ArticleRenderer.swift index a8f8c4e4b..85fc0db30 100644 --- a/Shared/Article Rendering/ArticleRenderer.swift +++ b/Shared/Article Rendering/ArticleRenderer.swift @@ -154,10 +154,7 @@ private extension ArticleRenderer { d["title"] = title if let externalLink = article.externalURL, externalLink != article.preferredLink { - var displayLink = externalLink.strippingHTTPOrHTTPSScheme - if displayLink.count > 27 { - displayLink = displayLink.prefix(27).appending("...") - } + let displayLink = externalLink.strippingHTTPOrHTTPSScheme let regarding = NSLocalizedString("Link", comment: "Link") let externalLinkString = "\(regarding): \(displayLink)" d["external_link"] = externalLinkString diff --git a/Shared/Article Rendering/shared.css b/Shared/Article Rendering/shared.css index 9019d6aee..d14237442 100644 --- a/Shared/Article Rendering/shared.css +++ b/Shared/Article Rendering/shared.css @@ -118,6 +118,10 @@ body > .systemMessage { .externalLink { margin-bottom: 5px; font-style: italic; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .articleBody { From 18ad76e7b9887ed961cdeb916f68d9418ed86bf7 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 27 Jul 2021 13:37:31 -0500 Subject: [PATCH 028/169] Hide Daring Fireball's external link --- Shared/Article Rendering/shared.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Shared/Article Rendering/shared.css b/Shared/Article Rendering/shared.css index d14237442..b0626b7c9 100644 --- a/Shared/Article Rendering/shared.css +++ b/Shared/Article Rendering/shared.css @@ -266,6 +266,14 @@ blockquote { border-top: 1px solid var(--header-table-border-color); } +/* Hide the external link at the bottom of Daring Fireball posts */ + +.x-netnewswire-hide { + display: none; +} + +/* see removeWpSmiley; this rule is kept in case a wp-smiley is encountered without alt text */ + .wp-smiley { height: 1em; max-height: 1em; From 25370cc0af2cb5b6241c9d99ac89159954c9d694 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 27 Jul 2021 13:37:31 -0500 Subject: [PATCH 029/169] Hide Daring Fireball's external link --- Shared/Article Rendering/shared.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Shared/Article Rendering/shared.css b/Shared/Article Rendering/shared.css index d14237442..b0626b7c9 100644 --- a/Shared/Article Rendering/shared.css +++ b/Shared/Article Rendering/shared.css @@ -266,6 +266,14 @@ blockquote { border-top: 1px solid var(--header-table-border-color); } +/* Hide the external link at the bottom of Daring Fireball posts */ + +.x-netnewswire-hide { + display: none; +} + +/* see removeWpSmiley; this rule is kept in case a wp-smiley is encountered without alt text */ + .wp-smiley { height: 1em; max-height: 1em; From acccc4f063935a847de1d6332f77a2935d14454b Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 29 Jul 2021 17:11:22 -0500 Subject: [PATCH 030/169] Add Feedbin external url handling. Fixes #3239 --- .../Sources/Account/Feedbin/FeedbinAccountDelegate.swift | 2 +- Account/Sources/Account/Feedbin/FeedbinEntry.swift | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift b/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift index 418711849..418c1c81a 100644 --- a/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift +++ b/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift @@ -1259,7 +1259,7 @@ private extension FeedbinAccountDelegate { let parsedItems: [ParsedItem] = entries.map { entry in let authors = Set([ParsedAuthor(name: entry.authorName, url: entry.jsonFeed?.jsonFeedAuthor?.url, avatarURL: entry.jsonFeed?.jsonFeedAuthor?.avatarURL, emailAddress: nil)]) - return ParsedItem(syncServiceID: String(entry.articleID), uniqueID: String(entry.articleID), feedURL: String(entry.feedID), url: entry.url, externalURL: nil, title: entry.title, language: nil, contentHTML: entry.contentHTML, contentText: nil, summary: entry.summary, imageURL: nil, bannerImageURL: nil, datePublished: entry.parsedDatePublished, dateModified: nil, authors: authors, tags: nil, attachments: nil) + return ParsedItem(syncServiceID: String(entry.articleID), uniqueID: String(entry.articleID), feedURL: String(entry.feedID), url: entry.url, externalURL: entry.jsonFeed?.jsonFeedExternalURL, title: entry.title, language: nil, contentHTML: entry.contentHTML, contentText: nil, summary: entry.summary, imageURL: nil, bannerImageURL: nil, datePublished: entry.parsedDatePublished, dateModified: nil, authors: authors, tags: nil, attachments: nil) } return Set(parsedItems) diff --git a/Account/Sources/Account/Feedbin/FeedbinEntry.swift b/Account/Sources/Account/Feedbin/FeedbinEntry.swift index 741d6abfc..27e23a140 100644 --- a/Account/Sources/Account/Feedbin/FeedbinEntry.swift +++ b/Account/Sources/Account/Feedbin/FeedbinEntry.swift @@ -52,9 +52,11 @@ final class FeedbinEntry: Decodable { struct FeedbinEntryJSONFeed: Decodable { let jsonFeedAuthor: FeedbinEntryJSONFeedAuthor? - + let jsonFeedExternalURL: String? + enum CodingKeys: String, CodingKey { case jsonFeedAuthor = "author" + case jsonFeedExternalURL = "external_url" } public init(from decoder: Decoder) throws { @@ -64,6 +66,11 @@ struct FeedbinEntryJSONFeed: Decodable { } catch { jsonFeedAuthor = nil } + do { + jsonFeedExternalURL = try container.decode(String.self, forKey: .jsonFeedExternalURL) + } catch { + jsonFeedExternalURL = nil + } } } From 3512646261d04fb61d6a02bedf189e1ef66844d8 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 29 Jul 2021 17:11:22 -0500 Subject: [PATCH 031/169] Add Feedbin external url handling. Fixes #3239 --- .../Sources/Account/Feedbin/FeedbinAccountDelegate.swift | 2 +- Account/Sources/Account/Feedbin/FeedbinEntry.swift | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift b/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift index cbb44d837..e46b52885 100644 --- a/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift +++ b/Account/Sources/Account/Feedbin/FeedbinAccountDelegate.swift @@ -1259,7 +1259,7 @@ private extension FeedbinAccountDelegate { let parsedItems: [ParsedItem] = entries.map { entry in let authors = Set([ParsedAuthor(name: entry.authorName, url: entry.jsonFeed?.jsonFeedAuthor?.url, avatarURL: entry.jsonFeed?.jsonFeedAuthor?.avatarURL, emailAddress: nil)]) - return ParsedItem(syncServiceID: String(entry.articleID), uniqueID: String(entry.articleID), feedURL: String(entry.feedID), url: entry.url, externalURL: nil, title: entry.title, language: nil, contentHTML: entry.contentHTML, contentText: nil, summary: entry.summary, imageURL: nil, bannerImageURL: nil, datePublished: entry.parsedDatePublished, dateModified: nil, authors: authors, tags: nil, attachments: nil) + return ParsedItem(syncServiceID: String(entry.articleID), uniqueID: String(entry.articleID), feedURL: String(entry.feedID), url: entry.url, externalURL: entry.jsonFeed?.jsonFeedExternalURL, title: entry.title, language: nil, contentHTML: entry.contentHTML, contentText: nil, summary: entry.summary, imageURL: nil, bannerImageURL: nil, datePublished: entry.parsedDatePublished, dateModified: nil, authors: authors, tags: nil, attachments: nil) } return Set(parsedItems) diff --git a/Account/Sources/Account/Feedbin/FeedbinEntry.swift b/Account/Sources/Account/Feedbin/FeedbinEntry.swift index 741d6abfc..27e23a140 100644 --- a/Account/Sources/Account/Feedbin/FeedbinEntry.swift +++ b/Account/Sources/Account/Feedbin/FeedbinEntry.swift @@ -52,9 +52,11 @@ final class FeedbinEntry: Decodable { struct FeedbinEntryJSONFeed: Decodable { let jsonFeedAuthor: FeedbinEntryJSONFeedAuthor? - + let jsonFeedExternalURL: String? + enum CodingKeys: String, CodingKey { case jsonFeedAuthor = "author" + case jsonFeedExternalURL = "external_url" } public init(from decoder: Decoder) throws { @@ -64,6 +66,11 @@ struct FeedbinEntryJSONFeed: Decodable { } catch { jsonFeedAuthor = nil } + do { + jsonFeedExternalURL = try container.decode(String.self, forKey: .jsonFeedExternalURL) + } catch { + jsonFeedExternalURL = nil + } } } From b38ee75ba24fa7e1b6b50eeea4ba0d0ebca101ce Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 10 Aug 2021 20:07:38 -0500 Subject: [PATCH 032/169] Fix bug that was incorrectly parsing Twitter Symbols. Fixes #3248 --- .../Account/FeedProvider/Twitter/TwitterSymbol.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift index 525a1a595..9b1119743 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift @@ -10,18 +10,18 @@ import Foundation struct TwitterSymbol: Codable, TwitterEntity { - let name: String? + let text: String? let indices: [Int]? enum CodingKeys: String, CodingKey { - case name = "name" + case text = "text" case indices = "indices" } func renderAsHTML() -> String { var html = String() - if let name = name { - html += "$\(name)" + if let text = text { + html += "$\(text)" } return html } From 15bf35ce28ee68396b570da3dbe3b816f720fdae Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 10 Aug 2021 20:07:38 -0500 Subject: [PATCH 033/169] Fix bug that was incorrectly parsing Twitter Symbols. Fixes #3248 --- .../Account/FeedProvider/Twitter/TwitterSymbol.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift index 525a1a595..9b1119743 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterSymbol.swift @@ -10,18 +10,18 @@ import Foundation struct TwitterSymbol: Codable, TwitterEntity { - let name: String? + let text: String? let indices: [Int]? enum CodingKeys: String, CodingKey { - case name = "name" + case text = "text" case indices = "indices" } func renderAsHTML() -> String { var html = String() - if let name = name { - html += "$\(name)" + if let text = text { + html += "$\(text)" } return html } From 656782ff9e1c83da11d0b5bca34bca4d07aa382b Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 17 Aug 2021 17:40:00 -0500 Subject: [PATCH 034/169] Replace newlines with line breaks. Fixes #3258 --- .../Sources/Account/FeedProvider/Twitter/TwitterStatus.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift index 047b6a422..79697e9eb 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -115,7 +115,7 @@ private extension TwitterStatus { } if prevIndex < displayEndIndex { - html += String(text[prevIndex..") } return html From 4820d3eee65d959e8edbed9872e4d8fa5948e2a5 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 17 Aug 2021 17:40:00 -0500 Subject: [PATCH 035/169] Replace newlines with line breaks. Fixes #3258 --- .../Sources/Account/FeedProvider/Twitter/TwitterStatus.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift index 275d4b354..eeef28076 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -115,7 +115,7 @@ private extension TwitterStatus { } if prevIndex < displayEndIndex { - html += String(text[prevIndex..") } return html From 05e3ff9fd20c4a972be70b8236a977ecd3fde6d4 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 17 Aug 2021 17:40:00 -0500 Subject: [PATCH 036/169] Replace newlines with line breaks. Fixes #3258 --- .../Sources/Account/FeedProvider/Twitter/TwitterStatus.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift index 275d4b354..eeef28076 100644 --- a/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Account/Sources/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -115,7 +115,7 @@ private extension TwitterStatus { } if prevIndex < displayEndIndex { - html += String(text[prevIndex..") } return html From 7e689d2eb107d5f0ad0fbf544484302e26139984 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 21 Aug 2021 16:09:47 -0500 Subject: [PATCH 037/169] Revalidate the API keys if they are expired. Fixes #3210 --- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 812085fbe..58422a96f 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -136,8 +136,35 @@ final class ReaderAPIAccountDelegate: AccountDelegate { case .failure(let error): DispatchQueue.main.async { self.refreshProgress.clear() + let wrappedError = AccountError.wrappedError(error: error, account: account) - completion(.failure(wrappedError)) + if wrappedError.isCredentialsError, let basicCredentials = try? account.retrieveCredentials(type: .readerBasic), let endpoint = account.endpointURL { + self.caller.credentials = basicCredentials + + self.caller.validateCredentials(endpoint: endpoint) { result in + switch result { + case .success(let apiCredentials): + if let apiCredentials = apiCredentials { + DispatchQueue.main.async { + try? account.storeCredentials(apiCredentials) + self.caller.credentials = apiCredentials + self.refreshAll(for: account, completion: completion) + } + } else { + DispatchQueue.main.async { + completion(.failure(wrappedError)) + } + } + case .failure: + DispatchQueue.main.async { + completion(.failure(wrappedError)) + } + } + } + + } else { + completion(.failure(wrappedError)) + } } } From 8828c0eaaada5afa528b97b26632c3dc985f7860 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 21 Aug 2021 16:09:47 -0500 Subject: [PATCH 038/169] Revalidate the API keys if they are expired. Fixes #3210 --- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 7d36cb5be..85f6235e7 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -136,8 +136,35 @@ final class ReaderAPIAccountDelegate: AccountDelegate { case .failure(let error): DispatchQueue.main.async { self.refreshProgress.clear() + let wrappedError = AccountError.wrappedError(error: error, account: account) - completion(.failure(wrappedError)) + if wrappedError.isCredentialsError, let basicCredentials = try? account.retrieveCredentials(type: .readerBasic), let endpoint = account.endpointURL { + self.caller.credentials = basicCredentials + + self.caller.validateCredentials(endpoint: endpoint) { result in + switch result { + case .success(let apiCredentials): + if let apiCredentials = apiCredentials { + DispatchQueue.main.async { + try? account.storeCredentials(apiCredentials) + self.caller.credentials = apiCredentials + self.refreshAll(for: account, completion: completion) + } + } else { + DispatchQueue.main.async { + completion(.failure(wrappedError)) + } + } + case .failure: + DispatchQueue.main.async { + completion(.failure(wrappedError)) + } + } + } + + } else { + completion(.failure(wrappedError)) + } } } From 8634858249dec2b6f0665d510279d15a34b74633 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 21 Aug 2021 16:09:47 -0500 Subject: [PATCH 039/169] Revalidate the API keys if they are expired. Fixes #3210 --- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 16d333340..87db27815 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -136,8 +136,35 @@ final class ReaderAPIAccountDelegate: AccountDelegate { case .failure(let error): DispatchQueue.main.async { self.refreshProgress.clear() + let wrappedError = AccountError.wrappedError(error: error, account: account) - completion(.failure(wrappedError)) + if wrappedError.isCredentialsError, let basicCredentials = try? account.retrieveCredentials(type: .readerBasic), let endpoint = account.endpointURL { + self.caller.credentials = basicCredentials + + self.caller.validateCredentials(endpoint: endpoint) { result in + switch result { + case .success(let apiCredentials): + if let apiCredentials = apiCredentials { + DispatchQueue.main.async { + try? account.storeCredentials(apiCredentials) + self.caller.credentials = apiCredentials + self.refreshAll(for: account, completion: completion) + } + } else { + DispatchQueue.main.async { + completion(.failure(wrappedError)) + } + } + case .failure: + DispatchQueue.main.async { + completion(.failure(wrappedError)) + } + } + } + + } else { + completion(.failure(wrappedError)) + } } } From 7773e31e17860fc81530bf65e0e846a2fe427093 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 21 Aug 2021 18:08:29 -0700 Subject: [PATCH 040/169] Release notes for 6.0.1 first TestFlight build. --- Technotes/ReleaseNotes-iOS.markdown | 16 ++++++++++++++++ .../NetNewsWire_ios_target_common.xcconfig | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Technotes/ReleaseNotes-iOS.markdown b/Technotes/ReleaseNotes-iOS.markdown index 8102b5fd3..7f4de89e5 100644 --- a/Technotes/ReleaseNotes-iOS.markdown +++ b/Technotes/ReleaseNotes-iOS.markdown @@ -1,5 +1,21 @@ # iOS Release Notes +### 6.0.1 TestFlight build 607 - 21 Aug 2021 + +Fixed bug where BazQux-synced feeds might stop updating +Fixed bug where words prepended with $ wouldn’t appear in Twitter feeds +Fixed bug where newlines would be just a space in Twitter feeds +Fixed a crashing bug in Twitter rendering +Fixed bug where hitting b key to open in browser wouldn’t always work +Fixed a crashing bug due to running code off the main thread that needed to be on the main thread +Fixed bug where article unread indicator could have wrong alpha in specific circumstances +Fixed bug using right arrow key to move focus to Article view +Fixed bug where long press could trigger a crash +Fixed bug where external URLs in Feedbin feeds might be lost +Fixed bug where favicons wouldn’t be found when a home page URL has non-ASCII characters +Fixed bug where iCloud syncing could stop prematurely when the sync database has records not in the local database + + ### 6.0 TestFlight build 604 - 31 May 2021 This is a final candidate diff --git a/xcconfig/common/NetNewsWire_ios_target_common.xcconfig b/xcconfig/common/NetNewsWire_ios_target_common.xcconfig index ef5675d42..f51679314 100644 --- a/xcconfig/common/NetNewsWire_ios_target_common.xcconfig +++ b/xcconfig/common/NetNewsWire_ios_target_common.xcconfig @@ -1,7 +1,7 @@ // High Level Settings common to both the iOS application and any extensions we bundle with it -MARKETING_VERSION = 6.0 -CURRENT_PROJECT_VERSION = 606 +MARKETING_VERSION = 6.0.1 +CURRENT_PROJECT_VERSION = 607 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon From 7c6ddb5d95dca4fdbcb747585e881809b939a0dc Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 21 Aug 2021 18:10:29 -0700 Subject: [PATCH 041/169] Update release notes for 607 --- Technotes/ReleaseNotes-iOS.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/Technotes/ReleaseNotes-iOS.markdown b/Technotes/ReleaseNotes-iOS.markdown index 7f4de89e5..76ba1e0ef 100644 --- a/Technotes/ReleaseNotes-iOS.markdown +++ b/Technotes/ReleaseNotes-iOS.markdown @@ -14,6 +14,7 @@ Fixed bug where long press could trigger a crash Fixed bug where external URLs in Feedbin feeds might be lost Fixed bug where favicons wouldn’t be found when a home page URL has non-ASCII characters Fixed bug where iCloud syncing could stop prematurely when the sync database has records not in the local database +Fixed bug where creating a new folder in iCloud and moving feeds to it wouldn’t sync correctly ### 6.0 TestFlight build 604 - 31 May 2021 From 08a1120e00fec98762b18abaa74de897583536ca Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sun, 22 Aug 2021 09:42:06 +0800 Subject: [PATCH 042/169] Adds app default option Adds app defaults option for controlling link opening preferences. Adds browser logic and images. Browser Manager Updates - Handles deletion of current browser - Fixes detection of installed browsers by moving URL Types to LSApplicationQuery - Updates icons to glyphs - Context menus update tidy up - removes browser specific options and offers in-app or default browser options (can be enabled via a bool) - adds 1Password as an option - removes custom wording on context menus Fixes - makes sure browser options are available on iPad - uses VibrantCell - Changes Settings title to "Open Links In" --- NetNewsWire.xcodeproj/project.pbxproj | 18 +- iOS/AppDefaults.swift | 27 +++ iOS/Article/WebViewController.swift | 15 +- .../MasterTimelineViewController.swift | 4 +- .../Assets.xcassets/browsers/Contents.json | 6 + .../browser.brave.imageset/Contents.json | 15 ++ .../icons8-brave-web-browser.pdf | Bin 0 -> 2673 bytes .../browser.chrome.imageset/Contents.json | 15 ++ .../browser.chrome.imageset/icons8-chrome.pdf | Bin 0 -> 1343 bytes .../browser.edge.imageset/Contents.json | 15 ++ .../icons8-microsoft-edge.pdf | Bin 0 -> 2105 bytes .../browser.firefox.imageset/Contents.json | 16 ++ .../firefox-logo-glyph.pdf | Bin 0 -> 7768 bytes .../AppIcon-120px-40pt@3x.png | Bin 0 -> 19538 bytes .../AppIcon-40px-40pt@1x.png | Bin 0 -> 3218 bytes .../AppIcon-80px-40pt@2x.png | Bin 0 -> 9834 bytes .../browser.inapp.imageset/Contents.json | 23 ++ .../1password.pdf | Bin 0 -> 4183 bytes .../Contents.json | 15 ++ .../browser.opera.imageset/Contents.json | 15 ++ .../browser.opera.imageset/icons8-opera.pdf | 72 +++++++ .../browser.safari.imageset/Contents.json | 15 ++ .../browser.safari.imageset/safari.pdf | Bin 0 -> 384788 bytes iOS/Resources/Info.plist | 14 +- iOS/SceneCoordinator.swift | 7 +- iOS/SceneDelegate.swift | 1 + iOS/Settings/Browser.swift | 113 ++++++++++ iOS/Settings/BrowserCell.swift | 47 ++++ .../BrowserConfigurationViewController.swift | 89 ++++++++ iOS/Settings/BrowserManager.swift | 97 +++++++++ iOS/Settings/Settings.storyboard | 202 ++++++++++++------ iOS/Settings/SettingsTableViewCell.xib | 23 +- iOS/Settings/SettingsViewController.swift | 19 +- 33 files changed, 803 insertions(+), 80 deletions(-) create mode 100644 iOS/Resources/Assets.xcassets/browsers/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.brave.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.brave.imageset/icons8-brave-web-browser.pdf create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.chrome.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.chrome.imageset/icons8-chrome.pdf create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.edge.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.edge.imageset/icons8-microsoft-edge.pdf create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.firefox.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.firefox.imageset/firefox-logo-glyph.pdf create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/AppIcon-120px-40pt@3x.png create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/AppIcon-40px-40pt@1x.png create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/AppIcon-80px-40pt@2x.png create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.onepassword.imageset/1password.pdf create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.onepassword.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/icons8-opera.pdf create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.safari.imageset/Contents.json create mode 100644 iOS/Resources/Assets.xcassets/browsers/browser.safari.imageset/safari.pdf create mode 100644 iOS/Settings/Browser.swift create mode 100644 iOS/Settings/BrowserCell.swift create mode 100644 iOS/Settings/BrowserConfigurationViewController.swift create mode 100644 iOS/Settings/BrowserManager.swift diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 45291f1d1..c736e1da9 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -72,6 +72,9 @@ 173A642C2547BE9600267F6E /* AccountType+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 173A64162547BE0900267F6E /* AccountType+Helpers.swift */; }; 175942AA24AD533200585066 /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; }; 175942AB24AD533200585066 /* RefreshInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5183CCE4226F4DFA0010922C /* RefreshInterval.swift */; }; + 175EBD7426D2405A009B5B23 /* BrowserConfigurationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 175EBD7326D2405A009B5B23 /* BrowserConfigurationViewController.swift */; }; + 175EBD7626D240D8009B5B23 /* BrowserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 175EBD7526D240D8009B5B23 /* BrowserCell.swift */; }; + 1760888126D1F04500E853E9 /* BrowserManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1760888026D1F04500E853E9 /* BrowserManager.swift */; }; 176813D02564BA5900D98635 /* WidgetData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 176813B62564B9F800D98635 /* WidgetData.swift */; }; 176813D12564BA5900D98635 /* WidgetDataDecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 176813C92564BA5400D98635 /* WidgetDataDecoder.swift */; }; 176813D22564BA5900D98635 /* WidgetDataEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 176813BD2564BA2800D98635 /* WidgetDataEncoder.swift */; }; @@ -1210,6 +1213,7 @@ DF98E2B02578AA5C00F18944 /* AddFeedWranglerAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF98E2AF2578AA5C00F18944 /* AddFeedWranglerAccountView.swift */; }; DF98E2BE2578AC0000F18944 /* AddNewsBlurAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF98E2BD2578AC0000F18944 /* AddNewsBlurAccountView.swift */; }; DF98E2C62578AD1B00F18944 /* AddReaderAPIAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF98E2C52578AD1B00F18944 /* AddReaderAPIAccountView.swift */; }; + DFC05D2226D3E0770047E788 /* Browser.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC05D2126D3E0770047E788 /* Browser.swift */; }; FA80C11724B0728000974098 /* AddFolderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA80C11624B0728000974098 /* AddFolderView.swift */; }; FA80C11824B0728000974098 /* AddFolderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA80C11624B0728000974098 /* AddFolderView.swift */; }; FA80C13E24B072AA00974098 /* AddFolderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA80C13D24B072AA00974098 /* AddFolderModel.swift */; }; @@ -1552,6 +1556,9 @@ 17386B792577C4BF0014C8B2 /* AddLocalAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddLocalAccountView.swift; sourceTree = ""; }; 17386BC32577CC600014C8B2 /* AddFeedbinAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddFeedbinAccountView.swift; sourceTree = ""; }; 173A64162547BE0900267F6E /* AccountType+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AccountType+Helpers.swift"; sourceTree = ""; }; + 175EBD7326D2405A009B5B23 /* BrowserConfigurationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserConfigurationViewController.swift; sourceTree = ""; }; + 175EBD7526D240D8009B5B23 /* BrowserCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserCell.swift; sourceTree = ""; }; + 1760888026D1F04500E853E9 /* BrowserManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserManager.swift; sourceTree = ""; }; 176813B62564B9F800D98635 /* WidgetData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetData.swift; sourceTree = ""; }; 176813BD2564BA2800D98635 /* WidgetDataEncoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetDataEncoder.swift; sourceTree = ""; }; 176813C92564BA5400D98635 /* WidgetDataDecoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetDataDecoder.swift; sourceTree = ""; }; @@ -2137,6 +2144,7 @@ DF98E2AF2578AA5C00F18944 /* AddFeedWranglerAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddFeedWranglerAccountView.swift; sourceTree = ""; }; DF98E2BD2578AC0000F18944 /* AddNewsBlurAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddNewsBlurAccountView.swift; sourceTree = ""; }; DF98E2C52578AD1B00F18944 /* AddReaderAPIAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddReaderAPIAccountView.swift; sourceTree = ""; }; + DFC05D2126D3E0770047E788 /* Browser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Browser.swift; sourceTree = ""; }; FA80C11624B0728000974098 /* AddFolderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddFolderView.swift; sourceTree = ""; }; FA80C13D24B072AA00974098 /* AddFolderModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddFolderModel.swift; sourceTree = ""; }; FF3ABF09232599450074C542 /* ArticleSorterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleSorterTests.swift; sourceTree = ""; }; @@ -2793,6 +2801,10 @@ 51A16992235E10D600EB091F /* AddAccountViewController.swift */, 519ED47924482AEB007F8E94 /* EnableExtensionPointViewController.swift */, 519ED455244828C3007F8E94 /* AddExtensionPointViewController.swift */, + DFC05D2126D3E0770047E788 /* Browser.swift */, + 1760888026D1F04500E853E9 /* BrowserManager.swift */, + 175EBD7326D2405A009B5B23 /* BrowserConfigurationViewController.swift */, + 175EBD7526D240D8009B5B23 /* BrowserCell.swift */, 516244E2241E19F000B61C47 /* ColorPaletteTableViewController.swift */, 516A09382360A2AE00EAE89B /* SettingsComboTableViewCell.swift */, 516A091D23609A3600EAE89B /* SettingsComboTableViewCell.xib */, @@ -4609,7 +4621,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if ! command -v swiftgen &> /dev/null\nthen\n echo \"swiftgen could not be found\"\n exit\nfi\n\narch -x86_64 swiftgen run strings -t structured-swift5 \"$PROJECT_DIR/Widget/Resources/en.lproj/Localizable.strings\" \"$PROJECT_DIR/Widget/Resources/Localizable.stringsdict\" --output \"$PROJECT_DIR/Widget/Resources/Localized.swift\";\n"; + shellScript = "if ! command -v swiftgen &> /dev/null\nthen\n echo \"swiftgen could not be found\"\n exit\nfi\n\nswiftgen run strings -t structured-swift5 \"$PROJECT_DIR/Widget/Resources/en.lproj/Localizable.strings\" \"$PROJECT_DIR/Widget/Resources/Localizable.stringsdict\" --output \"$PROJECT_DIR/Widget/Resources/Localized.swift\";\n"; }; 513F328A2593EFCE0003048F /* Delete Unnecessary Frameworks */ = { isa = PBXShellScriptBuildPhase; @@ -5490,6 +5502,7 @@ 510289CD24519A1D00426DDF /* SelectComboTableViewCell.swift in Sources */, 514B7C8323205EFB00BAC947 /* RootSplitViewController.swift in Sources */, 51FA73A52332BE110090D516 /* ArticleExtractor.swift in Sources */, + DFC05D2226D3E0770047E788 /* Browser.swift in Sources */, 51314704235C41FC00387FDC /* Intents.intentdefinition in Sources */, FF3ABF162325AF5D0074C542 /* ArticleSorter.swift in Sources */, 51C4525C226508DF00C03939 /* String-Extensions.swift in Sources */, @@ -5546,6 +5559,7 @@ 51C4528E2265099C00C03939 /* SmartFeedsController.swift in Sources */, 51C9DE5823EA2EF4003D5A6D /* WrapperScriptMessageHandler.swift in Sources */, 51627A6B238629D8007B3B4B /* MasterFeedDataSource.swift in Sources */, + 175EBD7626D240D8009B5B23 /* BrowserCell.swift in Sources */, 51B5C87D23F2346200032075 /* ExtensionContainersFile.swift in Sources */, 51102165233A7D6C0007A5F7 /* ArticleExtractorButton.swift in Sources */, 5141E7392373C18B0013FF27 /* WebFeedInspectorViewController.swift in Sources */, @@ -5602,11 +5616,13 @@ 516AE9E02372269A007DEEAA /* IconImage.swift in Sources */, 519ED456244828C3007F8E94 /* AddExtensionPointViewController.swift in Sources */, 51C45268226508F600C03939 /* MasterFeedUnreadCountView.swift in Sources */, + 1760888126D1F04500E853E9 /* BrowserManager.swift in Sources */, D3A39865246505DF00F9A366 /* FindInArticleActivity.swift in Sources */, 5183CCD0226E1E880010922C /* NonIntrinsicLabel.swift in Sources */, 51C4529F22650A1900C03939 /* AuthorAvatarDownloader.swift in Sources */, 5108F6D22375EED2001ABC45 /* TimelineCustomizerViewController.swift in Sources */, 519E743D22C663F900A78E47 /* SceneDelegate.swift in Sources */, + 175EBD7426D2405A009B5B23 /* BrowserConfigurationViewController.swift in Sources */, FFD43E412340F488009E5CA3 /* MarkAsReadAlertController.swift in Sources */, 51C452A322650A1E00C03939 /* HTMLMetadataDownloader.swift in Sources */, 51C4528D2265095F00C03939 /* AddFolderViewController.swift in Sources */, diff --git a/iOS/AppDefaults.swift b/iOS/AppDefaults.swift index d1e7ec909..1abc9063e 100644 --- a/iOS/AppDefaults.swift +++ b/iOS/AppDefaults.swift @@ -54,6 +54,7 @@ final class AppDefaults { static let addWebFeedAccountID = "addWebFeedAccountID" static let addWebFeedFolderName = "addWebFeedFolderName" static let addFolderAccountID = "addFolderAccountID" + static let browserPreference = "browserPreference" } let isDeveloperBuild: Bool = { @@ -119,6 +120,18 @@ final class AppDefaults { } } + var browserPreference: String { + get { + guard let preference = UserDefaults.standard.string(forKey: Key.browserPreference) else { + return "browser.inapp" + } + return preference + } + set { + UserDefaults.standard.setValue(newValue, forKey: Key.browserPreference) + } + } + var lastImageCacheFlushDate: Date? { get { return AppDefaults.date(for: Key.lastImageCacheFlushDate) @@ -191,6 +204,20 @@ final class AppDefaults { } } + /// The default behaviour is to open links in the in-app browser, as such, `Browsers.inApp.browserID` is the default. + +// var openLinksPreferredBrowser: String { +// get { +// if AppDefaults.store.string(forKey: Key.openLinksPreferredBrowser) == nil { +// return Browsers.inApp.browserID +// } else { +// return AppDefaults.store.string(forKey: Key.openLinksPreferredBrowser)! +// } +// } +// +// set { AppDefaults.store.setValue(newValue, forKey: Key.openLinksPreferredBrowser) } +// } + var timelineNumberOfLines: Int { get { return AppDefaults.int(for: Key.timelineNumberOfLines) diff --git a/iOS/Article/WebViewController.swift b/iOS/Article/WebViewController.swift index fe6188903..922a095b1 100644 --- a/iOS/Article/WebViewController.swift +++ b/iOS/Article/WebViewController.swift @@ -250,8 +250,12 @@ class WebViewController: UIViewController { func openInAppBrowser() { guard let url = article?.preferredURL else { return } - let vc = SFSafariViewController(url: url) - present(vc, animated: true) + if BrowserManager.shared.currentBrowser() == .inApp { + let vc = SFSafariViewController(url: url) + present(vc, animated: true) + } else { + BrowserManager.shared.openURL(urlString: url.absoluteString) + } } } @@ -344,7 +348,12 @@ extension WebViewController: WKNavigationDelegate { let components = URLComponents(url: url, resolvingAgainstBaseURL: false) if components?.scheme == "http" || components?.scheme == "https" { decisionHandler(.cancel) - openURL(url) + if BrowserManager.shared.currentBrowser() == .inApp { + openURL(url) + } else { + BrowserManager.shared.openURL(urlString: url.absoluteString) + } + } else if components?.scheme == "mailto" { decisionHandler(.cancel) diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 1a99608bd..b2e5f8413 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -899,7 +899,9 @@ private extension MasterTimelineViewController { func openInBrowserAlertAction(_ article: Article, completion: @escaping (Bool) -> Void) -> UIAlertAction? { guard let _ = article.preferredURL else { return nil } - let title = NSLocalizedString("Open in Browser", comment: "Open in Browser") + var displayName: String + BrowserManager.shared.currentBrowser() == .inApp ? (displayName = Browser.safari.displayName) : (displayName = BrowserManager.shared.currentBrowser().displayName) + let title = NSLocalizedString("Open in \(displayName)", comment: "Open in Browser") let action = UIAlertAction(title: title, style: .default) { [weak self] action in self?.coordinator.showBrowserForArticle(article) completion(true) diff --git a/iOS/Resources/Assets.xcassets/browsers/Contents.json b/iOS/Resources/Assets.xcassets/browsers/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.brave.imageset/Contents.json b/iOS/Resources/Assets.xcassets/browsers/browser.brave.imageset/Contents.json new file mode 100644 index 000000000..6ff7b5b01 --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.brave.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "icons8-brave-web-browser.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.brave.imageset/icons8-brave-web-browser.pdf b/iOS/Resources/Assets.xcassets/browsers/browser.brave.imageset/icons8-brave-web-browser.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d20ed9cb4c896af77e1606926e509d5dbb08de91 GIT binary patch literal 2673 zcmZWr3pkY78&9%n+SVmXAs?D`33I~?X4M+wnwn(YuX`8`hTPBw*NiPdCvLH?|aXCJ@ zJrA)4-~cBe6oSP9u$>Hcupk7m0U;s;005W^lOO9Nl_Xu+nPM)DHLuiytWwU z`ImI!-8klhbr#|va4z)WJ zj&DX4s!ct_U8;=Sa_`#y@*lcgp0l<5In7!;VTnBU>M`Rr^^Ts~@pa)2V$+mG`qrpl zXLLhK$Eo$wh^q1Ag_u{<2k!bk*0oM&Pez4~?;DRQuF4(4jdE$g##-w$7HD>ow*U=%=2lxN!2M+Nj@3 zk%jIahTP*u^mw?)OvV}-YfBqZt=zV4^qfaIpTu>3dMaL=J5kk`*{8o?bNNL7eMgx+ z=E$MRV>!P(>xs+KG@m>TH@+}i-!bs^En4S<_E3srOL3d5XH<(M7f#rr{M58 z+hF6sG3CNYx9H0?V&z5C*bnUabqjWpnPTkF&_cI55z;uaF71ar2f3c$cQ44!^!4Ai z(E`i_-#@8AtsYels@oT1SrZY24+luCd98*JPnN?IBDPVbTPbqg@7}xZYp2(aJ?-A7 zGu!}{De4t_;%-ZyCW}>{#r-N>PK};6v92A4gShb&2zh@xD>&~?M&?0z&cJ7$ z`P7q)k--BSjQZ-<0D6r(uFU=@MUyivzP@y;W2(KNqxWry_DRp3hi*^nT2-y@PDP)R zWy{7wO3S!N$yHiEbIvPgk3MHhZJl<2w$I}GruT^|f9jG-ByB1;?Gk#pTx!1Wv`|y{ z?&0_60uzeWQX6fj&~Ab>g(kS!rG&b4Pz*O^zSvA;8|U17 z-`wVH&hN$fB*huBlxFvCU`f0}P0h3t^5C1@kFy&uh>oV~U@K35!w<~!2x+0Nd3oH) zr+W8BU*rkDw$l7VXVsbudsV#7ng%#kxj`anhpuOgXmn-?3r3;%ncNd(PYPt^FU+#n zt3AK5q_Nuj|D@`*%byNme43Xknyl{Qykmfk`>>w`PbS}6Gt8;kz-lGw6<7fLrQ!KNEaFRy()vTkOYjf$)P z*&vA;zBTgh_)JN+CFw?u-BI*|qFZ5kohJDvs#CaFkIcJgf@2{`xdvPM!s0lEd3~vv zgGwiM4p0ssD2?c+KXtls1Q6EZNMwhF8rs-LsFnVek53uEQK{y)+=t#4*~7b0l88T~yz8{@FmM z_rw`?T2`0G`!;nP$}PfQoS|MQ9zy%PxsQX5XuT$oRfR9T_@@deN!vr;Q_(qjg&+kXy;~aW^(X!?K=KgMj=>l>ffIkR1rYqsq>L&{e+JvRsWTFU*VdW^iwa|v_G9L(Yw^)$6U%BRxu${af%5a+M;13##~a)+h*#>2-hqTL*nyuZ z5&Tk+se(ZjJIJ933>>ZyP#jTzbL|ql;-dtvBmu~*02ZqNzyYJd!2L zAm4&Nz!jXI^&tP&1HinaxeNeCpanAkD1cbfOQ7)>Yyo(6nZ~^sflQhcCkpTdAvj>O zH2s!jaU8Y)6y^hpKHwASyYe_f?iVh7vap0Mdr1QA@@Q;6S7C`By$rhp0-lhue8PcJ z&WuPVok4VUQh=W#fe{&ej*v%Z@Bu|Wh+o8|@OZfw`6n*E;x5dS8OR6ySA zWC#cLHUcJx?W`z_sk1#2jzqvQNF)MjjYgrUW?z^?e_`&Ezc`wJ#^MAoDN@vg|G5hP z)Gmt02!g-?32s;dD?f)?Z_|X21!QubK5Ewf! zZU2@-B5g7M!BA+se=q@$#$+*gON}9k8N&cwR@8yW;Rpal;GZ6gJ3EL2DAK-EN4|i@ S6D&oDv_>HyP$+)43*>*jj$iZu literal 0 HcmV?d00001 diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.chrome.imageset/Contents.json b/iOS/Resources/Assets.xcassets/browsers/browser.chrome.imageset/Contents.json new file mode 100644 index 000000000..1d65e4191 --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.chrome.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "icons8-chrome.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.chrome.imageset/icons8-chrome.pdf b/iOS/Resources/Assets.xcassets/browsers/browser.chrome.imageset/icons8-chrome.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7babc85aa8c4fa5e88801ae9c45e5d84f472b223 GIT binary patch literal 1343 zcmY!laB6C3Q=7i!3J=efvE1~oY&*=FSh9wy!QxgY!! z3O$$qi`!Onp3v@?Z0FZFP8bw%CeGQ4cod&D?iM&h6sW7diJXOHR(erShe8ui9eiPpeP83VSu> z!iugHd=I?lu-K$X{!yG8(#!I~_sq{Sk9_U3S1)(*R4v)4%qvik<(M{q?=J37v+vo= zEw#BV8##ZT=4R#06FG6YC!d`an45CJLFa;-e*|ZJ^YIgXKjm89cmEI2IJK6Gt0sKz zfslA9tEYZ0>Q$R{ABM<=&i=C6fLHaw%)*?*-&!N)E>#xX7I@n8_>Gqb=42>xuH7;H z@v(xZ6C}a{CQSM{V+kIWOwCN1U(t+35g1t>Zs#e)#|PzsCJj@ltP( z#BrtOr9fjC$O5GeP=Wx_z$9T}ZU~YG@r>aq2b@-1D@xphOMvM_!Nvw800jDp20)I2 zzO$o(p@M#LB9H{89-st}1R|(8MsRZ!^g}8OQWf+A64O%^R22-t<_07drRJ3YwZamm zZ)!?rqEmi_LNrjwK*1D@V!>*i^Yco8ii;IMsTz`m-HY-|3y_=yu>mX!b7e5l-lD|3 z;sTIO$(1l+Plb}A(o`7F8K}x7wJb9^HOSowBna_|eo$(0erZv1YOw++Jc5w?1#&Sg zXCeGm4AQIbotaV$bU(=JK?*Rpmx8>BWPllx0Rct%DW%E4yr_|!m|2vsV5nzkre~m_ zkx^1oP;8|S3|ydSdQoCQMrLxcUVc%!rY6`TXJAe($;{7l0Y!|4i0URipnVK4#Dx@jE z#4OB#Ap-&md2lf^Q=n~VVx|_rbcQBoV2CMZYKCc^rLhINUPA*DON3ZSQDSCJY7w}Y z3(l-c1v(iN4?+3)B?=&qLlTQ;URu5aDA>XASX`1=R08&)p`n2xm#V6(zZ(|-TKdV( literal 0 HcmV?d00001 diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.edge.imageset/Contents.json b/iOS/Resources/Assets.xcassets/browsers/browser.edge.imageset/Contents.json new file mode 100644 index 000000000..648ebe289 --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.edge.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "icons8-microsoft-edge.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.edge.imageset/icons8-microsoft-edge.pdf b/iOS/Resources/Assets.xcassets/browsers/browser.edge.imageset/icons8-microsoft-edge.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1682aa60090ff386ac2406b0f3ede516c3c83fb9 GIT binary patch literal 2105 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 literal 0 HcmV?d00001 diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/AppIcon-120px-40pt@3x.png b/iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/AppIcon-120px-40pt@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..724a12a23aca15605319bb7313636c975d2e90b7 GIT binary patch literal 19538 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 Ef=ERq00000 literal 0 HcmV?d00001 diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/AppIcon-80px-40pt@2x.png b/iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/AppIcon-80px-40pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..47a4b083aed003b48e56f06c75691b1a18a333ae GIT binary patch literal 9834 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 QcmMzZ07*qoM6N<$g4u@dc>n+a literal 0 HcmV?d00001 diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/Contents.json b/iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/Contents.json new file mode 100644 index 000000000..4b418c667 --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.inapp.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "AppIcon-40px-40pt@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "AppIcon-80px-40pt@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "AppIcon-120px-40pt@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.onepassword.imageset/1password.pdf b/iOS/Resources/Assets.xcassets/browsers/browser.onepassword.imageset/1password.pdf new file mode 100644 index 0000000000000000000000000000000000000000..418cb74536623555fb46914bf9c588dd45ab1ee1 GIT binary patch literal 4183 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 Tpr5A)Q-LGEl9Ku;1MvR=UGY)e literal 0 HcmV?d00001 diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.onepassword.imageset/Contents.json b/iOS/Resources/Assets.xcassets/browsers/browser.onepassword.imageset/Contents.json new file mode 100644 index 000000000..cea03a9f2 --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.onepassword.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "1password.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/Contents.json b/iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/Contents.json new file mode 100644 index 000000000..020c9a183 --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "icons8-opera.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/icons8-opera.pdf b/iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/icons8-opera.pdf new file mode 100644 index 000000000..b7fe0d20e --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.opera.imageset/icons8-opera.pdf @@ -0,0 +1,72 @@ +%PDF-1.4 +% +4 0 obj +<< /Length 5 0 R + /Filter /FlateDecode +>> +stream +xmTA1 @]Km"@=?PRLr($$So.= H[;龁5DžKU̮ݣLj6xPrsVmDs2p6ڔd$:H}@kB/CtD =^M!,BCYu$ɠhWG +ͩ3ph%E7FOu/,gLH\= ++Ofa]1MI:ؑ"9tq4 MOT7V1/VFMRT"%UU깉hjx[%X6ۺOt8!Sa_Yʺuϒ͙JH'Ka/3 AaӗV{uq8 +cSd#$vX0Ex3>c"r؟R-WnRBuYy:{+Yt)؏7zn)fI/+ (ÞxL|"D +endstream +endobj +5 0 obj + 656 +endobj +3 0 obj +<< + /ExtGState << + /a0 << /CA 1 /ca 1 >> + >> +>> +endobj +2 0 obj +<< /Type /Page % 1 + /Parent 1 0 R + /MediaBox [ 0 0 50 50 ] + /Contents 4 0 R + /Group << + /Type /Group + /S /Transparency + /I true + /CS /DeviceRGB + >> + /Resources 3 0 R +>> +endobj +1 0 obj +<< /Type /Pages + /Kids [ 2 0 R ] + /Count 1 +>> +endobj +6 0 obj +<< /Producer (cairo 1.16.0 (https://cairographics.org)) + /CreationDate (D:20210822124817Z) +>> +endobj +7 0 obj +<< /Type /Catalog + /Pages 1 0 R +>> +endobj +xref +0 8 +0000000000 65535 f +0000001058 00000 n +0000000842 00000 n +0000000770 00000 n +0000000015 00000 n +0000000748 00000 n +0000001123 00000 n +0000001234 00000 n +trailer +<< /Size 8 + /Root 7 0 R + /Info 6 0 R +>> +startxref +1286 +%%EOF diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.safari.imageset/Contents.json b/iOS/Resources/Assets.xcassets/browsers/browser.safari.imageset/Contents.json new file mode 100644 index 000000000..422493fef --- /dev/null +++ b/iOS/Resources/Assets.xcassets/browsers/browser.safari.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "filename" : "safari.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "preserves-vector-representation" : true + } +} diff --git a/iOS/Resources/Assets.xcassets/browsers/browser.safari.imageset/safari.pdf b/iOS/Resources/Assets.xcassets/browsers/browser.safari.imageset/safari.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a0f7f8e03123d0c1b647dbf6fe43acd56295f43d GIT binary patch literal 384788 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%0D!v~$nqz$y1@B@_Sv)F@_Xiu>lONn#I8*~X_ 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%0DomJn=7#+EJEvIkrA*m4qE-oTcRu;mf9Jj0d_ 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%0D75vPm|Ok0HgJr~l#P>0dxA8PEN){>*3* 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 lwjwr<3I2Zy&>VPg6B2cQ4*q4*y)Ho^F# - OrganizationIdentifier - $(ORGANIZATION_IDENTIFIER) - DeveloperEntitlements - $(DEVELOPER_ENTITLEMENTS) AppGroup group.$(ORGANIZATION_IDENTIFIER).NetNewsWire.iOS AppIdentifierPrefix @@ -54,10 +50,18 @@ CFBundleVersion $(CURRENT_PROJECT_VERSION) + DeveloperEntitlements + $(DEVELOPER_ENTITLEMENTS) LSApplicationQueriesSchemes mailto org-appextension-feature-password-management + brave + touch-http + googlechrome + microsoft-edge-https + firefox + ophttps LSRequiresIPhoneOS @@ -76,6 +80,8 @@ Restoration SelectFeed + OrganizationIdentifier + $(ORGANIZATION_IDENTIFIER) UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 7bc4b4037..607d382e2 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -1229,7 +1229,12 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { func showBrowserForArticle(_ article: Article) { guard let url = article.preferredURL else { return } - UIApplication.shared.open(url, options: [:]) + if BrowserManager.shared.currentBrowser() == .inApp { + UIApplication.shared.open(url, options: [:]) + } else { + BrowserManager.shared.openURL(urlString: url.absoluteString) + } + } func showBrowserForCurrentArticle() { diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index 39a26aa2d..902faaddb 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -77,6 +77,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { appDelegate.prepareAccountsForForeground() coordinator.configurePanelMode(for: window!.frame.size) coordinator.resetFocus() + BrowserManager.shared.configureAvailableBrowsers() } func stateRestorationActivity(for scene: UIScene) -> NSUserActivity? { diff --git a/iOS/Settings/Browser.swift b/iOS/Settings/Browser.swift new file mode 100644 index 000000000..98d333c50 --- /dev/null +++ b/iOS/Settings/Browser.swift @@ -0,0 +1,113 @@ +// +// Browser.swift +// NetNewsWire-iOS +// +// Created by Stuart Breckenridge on 23/08/2021. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import Foundation + + + +/// The `Browser` enum contains browsers supported by NetNewsWire. +/// +/// To support a new browser, create a case, configure it, add its URL scheme +/// to `LSApplicationQueriesSchemes` in `Info.plist`, and add an +/// appropriate image to the Asset catalog. The browserID should be used as the +/// image filename. +public enum Browser: CaseIterable { + + case inApp + case safari + case brave + case chrome + case edge + case firefox + case opera + case onePassword + + var urlScheme: String { + switch self { + case .inApp: + return "" // not required, will open in SFSafariViewController + case .safari: + return "" // not required, will use openURL + case .brave: + return "brave://open-url?url=" + case .chrome: + return "googlechrome://" + case .edge: + return "microsoft-edge-https://" + case .firefox: + return "firefox://open-url?url=" + case .opera: + return "touch-http://" + case .onePassword: + return "ophttps://" + } + } + + var canOpenURL: Bool { + switch self { + case .inApp: + return true + case .safari: + return UIApplication.shared.canOpenURL(URL(string: "https://apple.com")!) + case .brave: + return UIApplication.shared.canOpenURL(URL(string: Browser.brave.urlScheme)!) + case .chrome: + return UIApplication.shared.canOpenURL(URL(string: Browser.chrome.urlScheme)!) + case .edge: + return UIApplication.shared.canOpenURL(URL(string: Browser.edge.urlScheme)!) + case .firefox: + return UIApplication.shared.canOpenURL(URL(string: Browser.firefox.urlScheme)!) + case .opera: + return UIApplication.shared.canOpenURL(URL(string: Browser.opera.urlScheme)!) + case .onePassword: + return UIApplication.shared.canOpenURL(URL(string: Browser.onePassword.urlScheme)!) + } + } + + var browserID: String { + switch self { + case .inApp: + return "browser.inapp" + case .safari: + return "browser.safari" + case .brave: + return "browser.brave" + case .chrome: + return "browser.chrome" + case .edge: + return "browser.edge" + case .firefox: + return "browser.firefox" + case .opera: + return "browser.opera" + case .onePassword: + return "browser.onepassword" + } + } + + var displayName: String { + switch self { + case .inApp: + return NSLocalizedString("NetNewsWire", comment: "In-app") + case .safari: + return NSLocalizedString("Default Browser", comment: "Default") + case .brave: + return NSLocalizedString("Brave", comment: "Brave") + case .chrome: + return NSLocalizedString("Chrome", comment: "Chrome") + case .edge: + return NSLocalizedString("Edge", comment: "Edge") + case .firefox: + return NSLocalizedString("Firefox", comment: "Firefox") + case .opera: + return NSLocalizedString("Opera", comment: "Opera") + case .onePassword: + return NSLocalizedString("1Password", comment: "1Password") + } + } +} diff --git a/iOS/Settings/BrowserCell.swift b/iOS/Settings/BrowserCell.swift new file mode 100644 index 000000000..4f8459c5a --- /dev/null +++ b/iOS/Settings/BrowserCell.swift @@ -0,0 +1,47 @@ +// +// BrowserCell.swift +// NetNewsWire-iOS +// +// Created by Stuart Breckenridge on 22/8/21. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import UIKit + +class BrowserCell: VibrantTableViewCell { + + @IBOutlet weak var browserName: UILabel! + private var browser: Browser! + + override func updateVibrancy(animated: Bool) { + super.updateVibrancy(animated: animated) + updateLabelVibrancy(browserName, color: labelColor, animated: animated) + } + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + + func configure(with browser: Browser) { + browserName.text = browser.displayName + self.browser = browser + + if BrowserManager.shared.currentBrowser().browserID == browser.browserID { + accessoryType = .checkmark + } else { + accessoryType = .none + } + } + + func updateBrowserSelection() { + BrowserManager.shared.currentBrowserPreference = self.browser.browserID + } + + override func setSelected(_ selected: Bool, animated: Bool) { + super.setSelected(selected, animated: animated) + + // Configure the view for the selected state + } + +} diff --git a/iOS/Settings/BrowserConfigurationViewController.swift b/iOS/Settings/BrowserConfigurationViewController.swift new file mode 100644 index 000000000..fb8cabd4c --- /dev/null +++ b/iOS/Settings/BrowserConfigurationViewController.swift @@ -0,0 +1,89 @@ +// +// BrowserConfigurationViewController.swift +// NetNewsWire-iOS +// +// Created by Stuart Breckenridge on 22/8/21. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import UIKit + +class BrowserConfigurationViewController: UITableViewController { + + let browserManager = BrowserManager.shared + + override func viewDidLoad() { + super.viewDidLoad() + title = NSLocalizedString("Browser Selection", comment: "Browser") + NotificationCenter.default.addObserver(self, selector: #selector(browserPreferenceDidChange), name: .browserPreferenceDidChange, object: nil) + } + + // MARK: - Table view data source + + override func numberOfSections(in tableView: UITableView) -> Int { + return 3 + } + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + if section == 0 { return 1 } + if section == 1 { return 1 } + return browserManager.availableBrowsers.count - 2 + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + if indexPath.section == 0 { + let cell = tableView.dequeueReusableCell(withIdentifier: "BrowserCell", for: indexPath) as! BrowserCell + cell.configure(with: browserManager.availableBrowsers[indexPath.row]) + return cell + } + + if indexPath.section == 1 { + let cell = tableView.dequeueReusableCell(withIdentifier: "BrowserCell", for: indexPath) as! BrowserCell + cell.configure(with: browserManager.availableBrowsers[indexPath.row + 1]) + return cell + } + + if indexPath.section == 2 { + let cell = tableView.dequeueReusableCell(withIdentifier: "BrowserCell", for: indexPath) as! BrowserCell + cell.configure(with: browserManager.availableBrowsers[indexPath.row + 2]) + return cell + } + + return tableView.dequeueReusableCell(withIdentifier: "BrowserCell") ?? UITableViewCell() + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + tableView.deselectRow(at: indexPath, animated: true) + guard let cell = tableView.cellForRow(at: indexPath) as? BrowserCell else { + return + } + cell.updateBrowserSelection() + navigationController?.popViewController(animated: true) + } + + override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + if section == 0 { + return NSLocalizedString("Open Links In", comment: "Open Links") + } + return nil + } + + override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? { + if section == 0 { + return NSLocalizedString("Links will open in NetNewsWire.", comment: "NNW browser footer.") + } + + if section == 1 { + return NSLocalizedString("Links will open in the default system browser configured in Settings.", comment: "Default browser footer.") + } + + + return nil + } + + // MARK: - Notifications + @objc func browserPreferenceDidChange() { + tableView.reloadData() + } + +} diff --git a/iOS/Settings/BrowserManager.swift b/iOS/Settings/BrowserManager.swift new file mode 100644 index 000000000..f13946c8a --- /dev/null +++ b/iOS/Settings/BrowserManager.swift @@ -0,0 +1,97 @@ +// +// BrowserManager.swift +// NetNewsWire-iOS +// +// Created by Stuart Breckenridge on 22/8/21. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import Foundation +import UIKit + +extension Notification.Name { + static let browserPreferenceDidChange = Notification.Name("browserPreferenceDidChange") +} + +public final class BrowserManager { + + /// The available browsers supported by the application. If `enableExtendedBrowserPreferences` + /// is `false`, this will only contain in-app and system browser options. + public private(set) var availableBrowsers = [Browser]() + + /// The currently selected `BrowserID`. The default is `Browser.inApp`. + public var currentBrowserPreference: String { + get { + return AppDefaults.shared.browserPreference + } + set { + AppDefaults.shared.browserPreference = newValue + NotificationCenter.default.post(name: .browserPreferenceDidChange, object: nil) + } + } + + /// When `true`, the user can select a specific browser instead of the system default browser. + private var enableExtendedBrowserPreferences = false + + public static let shared = BrowserManager() + + private init() { + configureAvailableBrowsers() + } + + /// Refreshes the available browsers. This is called when BrowserManager is inited, + /// and when the application returns to the foreground. + func configureAvailableBrowsers() { + if !enableExtendedBrowserPreferences { + availableBrowsers = [.inApp, .safari] + } else { + availableBrowsers = Browser.allCases.filter({ $0.canOpenURL == true }) + } + resetBrowserPreferenceIfRequired() + } + + /// Opens the URL in the specified browser. + /// - Parameter urlString: the url to open. + func openURL(urlString: String) { + guard let url = URL(string: urlString) else { + return + } + if currentBrowser() == .safari { + UIApplication.shared.open(url, options: [:], completionHandler: nil) + return + } + + switch currentBrowser() { + case .edge, .chrome, .opera, .onePassword: + var string = urlString + string = string.replacingOccurrences(of: "https://", with: "") + string = string.replacingOccurrences(of: "http://", with: "") + guard let browserURL = URL(string: currentBrowser().urlScheme + string) else { + return + } + UIApplication.shared.open(browserURL, options: [:], completionHandler: nil) + default: + guard let browserURL = URL(string: currentBrowser().urlScheme + urlString) else { + return + } + UIApplication.shared.open(browserURL, options: [:], completionHandler: nil) + } + } + + /// If the user has uninstalled a browser this will reset the browser back to the in-app default. + private func resetBrowserPreferenceIfRequired() { + if availableBrowsers.filter({ $0.browserID == currentBrowserPreference }).count == 0 { + currentBrowserPreference = Browser.inApp.browserID + } + } + + /// The currently selected browser. + /// - Returns: `Browser` + func currentBrowser() -> Browser { + guard let browser = Browser.allCases.filter({ $0.browserID == currentBrowserPreference }).first else { + resetBrowserPreferenceIfRequired() + return currentBrowser() + } + return browser + } +} diff --git a/iOS/Settings/Settings.storyboard b/iOS/Settings/Settings.storyboard index 393853548..06b125e1b 100644 --- a/iOS/Settings/Settings.storyboard +++ b/iOS/Settings/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -21,7 +21,7 @@ - + @@ -42,14 +42,14 @@ - + - +
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%0D75vPm|Ok0HgJr~l#P>0dxA8PEN){>*3* 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 lwjwr<3I2Zy&>VPg6B2cQ4*q4*y)Ho^F# NSUserActivity? { diff --git a/iOS/Settings/Browser.swift b/iOS/Settings/Browser.swift index 98d333c50..20bd99c72 100644 --- a/iOS/Settings/Browser.swift +++ b/iOS/Settings/Browser.swift @@ -11,82 +11,17 @@ import Foundation /// The `Browser` enum contains browsers supported by NetNewsWire. -/// -/// To support a new browser, create a case, configure it, add its URL scheme -/// to `LSApplicationQueriesSchemes` in `Info.plist`, and add an -/// appropriate image to the Asset catalog. The browserID should be used as the -/// image filename. public enum Browser: CaseIterable { case inApp - case safari - case brave - case chrome - case edge - case firefox - case opera - case onePassword - - var urlScheme: String { - switch self { - case .inApp: - return "" // not required, will open in SFSafariViewController - case .safari: - return "" // not required, will use openURL - case .brave: - return "brave://open-url?url=" - case .chrome: - return "googlechrome://" - case .edge: - return "microsoft-edge-https://" - case .firefox: - return "firefox://open-url?url=" - case .opera: - return "touch-http://" - case .onePassword: - return "ophttps://" - } - } - - var canOpenURL: Bool { - switch self { - case .inApp: - return true - case .safari: - return UIApplication.shared.canOpenURL(URL(string: "https://apple.com")!) - case .brave: - return UIApplication.shared.canOpenURL(URL(string: Browser.brave.urlScheme)!) - case .chrome: - return UIApplication.shared.canOpenURL(URL(string: Browser.chrome.urlScheme)!) - case .edge: - return UIApplication.shared.canOpenURL(URL(string: Browser.edge.urlScheme)!) - case .firefox: - return UIApplication.shared.canOpenURL(URL(string: Browser.firefox.urlScheme)!) - case .opera: - return UIApplication.shared.canOpenURL(URL(string: Browser.opera.urlScheme)!) - case .onePassword: - return UIApplication.shared.canOpenURL(URL(string: Browser.onePassword.urlScheme)!) - } - } + case defaultBrowser var browserID: String { switch self { case .inApp: return "browser.inapp" - case .safari: + case .defaultBrowser: return "browser.safari" - case .brave: - return "browser.brave" - case .chrome: - return "browser.chrome" - case .edge: - return "browser.edge" - case .firefox: - return "browser.firefox" - case .opera: - return "browser.opera" - case .onePassword: - return "browser.onepassword" } } @@ -94,20 +29,13 @@ public enum Browser: CaseIterable { switch self { case .inApp: return NSLocalizedString("NetNewsWire", comment: "In-app") - case .safari: + case .defaultBrowser: return NSLocalizedString("Default Browser", comment: "Default") - case .brave: - return NSLocalizedString("Brave", comment: "Brave") - case .chrome: - return NSLocalizedString("Chrome", comment: "Chrome") - case .edge: - return NSLocalizedString("Edge", comment: "Edge") - case .firefox: - return NSLocalizedString("Firefox", comment: "Firefox") - case .opera: - return NSLocalizedString("Opera", comment: "Opera") - case .onePassword: - return NSLocalizedString("1Password", comment: "1Password") } } } + +// MARK: - Browser Notifications +public extension Notification.Name { + static let browserPreferenceDidChange = Notification.Name("browserPreferenceDidChange") +} diff --git a/iOS/Settings/BrowserCell.swift b/iOS/Settings/BrowserCell.swift index 4f8459c5a..3ad57a9f6 100644 --- a/iOS/Settings/BrowserCell.swift +++ b/iOS/Settings/BrowserCell.swift @@ -27,7 +27,7 @@ class BrowserCell: VibrantTableViewCell { browserName.text = browser.displayName self.browser = browser - if BrowserManager.shared.currentBrowser().browserID == browser.browserID { + if AppDefaults.shared.browserPreference == browser.browserID { accessoryType = .checkmark } else { accessoryType = .none @@ -35,7 +35,7 @@ class BrowserCell: VibrantTableViewCell { } func updateBrowserSelection() { - BrowserManager.shared.currentBrowserPreference = self.browser.browserID + AppDefaults.shared.browserPreference = self.browser.browserID } override func setSelected(_ selected: Bool, animated: Bool) { diff --git a/iOS/Settings/BrowserConfigurationViewController.swift b/iOS/Settings/BrowserConfigurationViewController.swift index fb8cabd4c..21fce3901 100644 --- a/iOS/Settings/BrowserConfigurationViewController.swift +++ b/iOS/Settings/BrowserConfigurationViewController.swift @@ -9,8 +9,6 @@ import UIKit class BrowserConfigurationViewController: UITableViewController { - - let browserManager = BrowserManager.shared override func viewDidLoad() { super.viewDidLoad() @@ -21,31 +19,23 @@ class BrowserConfigurationViewController: UITableViewController { // MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { - return 3 + return 2 } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - if section == 0 { return 1 } - if section == 1 { return 1 } - return browserManager.availableBrowsers.count - 2 + return 1 } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if indexPath.section == 0 { let cell = tableView.dequeueReusableCell(withIdentifier: "BrowserCell", for: indexPath) as! BrowserCell - cell.configure(with: browserManager.availableBrowsers[indexPath.row]) + cell.configure(with: Browser.allCases[0]) return cell } if indexPath.section == 1 { let cell = tableView.dequeueReusableCell(withIdentifier: "BrowserCell", for: indexPath) as! BrowserCell - cell.configure(with: browserManager.availableBrowsers[indexPath.row + 1]) - return cell - } - - if indexPath.section == 2 { - let cell = tableView.dequeueReusableCell(withIdentifier: "BrowserCell", for: indexPath) as! BrowserCell - cell.configure(with: browserManager.availableBrowsers[indexPath.row + 2]) + cell.configure(with: Browser.allCases[1]) return cell } @@ -77,7 +67,6 @@ class BrowserConfigurationViewController: UITableViewController { return NSLocalizedString("Links will open in the default system browser configured in Settings.", comment: "Default browser footer.") } - return nil } diff --git a/iOS/Settings/BrowserManager.swift b/iOS/Settings/BrowserManager.swift deleted file mode 100644 index f13946c8a..000000000 --- a/iOS/Settings/BrowserManager.swift +++ /dev/null @@ -1,97 +0,0 @@ -// -// BrowserManager.swift -// NetNewsWire-iOS -// -// Created by Stuart Breckenridge on 22/8/21. -// Copyright © 2021 Ranchero Software. All rights reserved. -// - -import Foundation -import UIKit - -extension Notification.Name { - static let browserPreferenceDidChange = Notification.Name("browserPreferenceDidChange") -} - -public final class BrowserManager { - - /// The available browsers supported by the application. If `enableExtendedBrowserPreferences` - /// is `false`, this will only contain in-app and system browser options. - public private(set) var availableBrowsers = [Browser]() - - /// The currently selected `BrowserID`. The default is `Browser.inApp`. - public var currentBrowserPreference: String { - get { - return AppDefaults.shared.browserPreference - } - set { - AppDefaults.shared.browserPreference = newValue - NotificationCenter.default.post(name: .browserPreferenceDidChange, object: nil) - } - } - - /// When `true`, the user can select a specific browser instead of the system default browser. - private var enableExtendedBrowserPreferences = false - - public static let shared = BrowserManager() - - private init() { - configureAvailableBrowsers() - } - - /// Refreshes the available browsers. This is called when BrowserManager is inited, - /// and when the application returns to the foreground. - func configureAvailableBrowsers() { - if !enableExtendedBrowserPreferences { - availableBrowsers = [.inApp, .safari] - } else { - availableBrowsers = Browser.allCases.filter({ $0.canOpenURL == true }) - } - resetBrowserPreferenceIfRequired() - } - - /// Opens the URL in the specified browser. - /// - Parameter urlString: the url to open. - func openURL(urlString: String) { - guard let url = URL(string: urlString) else { - return - } - if currentBrowser() == .safari { - UIApplication.shared.open(url, options: [:], completionHandler: nil) - return - } - - switch currentBrowser() { - case .edge, .chrome, .opera, .onePassword: - var string = urlString - string = string.replacingOccurrences(of: "https://", with: "") - string = string.replacingOccurrences(of: "http://", with: "") - guard let browserURL = URL(string: currentBrowser().urlScheme + string) else { - return - } - UIApplication.shared.open(browserURL, options: [:], completionHandler: nil) - default: - guard let browserURL = URL(string: currentBrowser().urlScheme + urlString) else { - return - } - UIApplication.shared.open(browserURL, options: [:], completionHandler: nil) - } - } - - /// If the user has uninstalled a browser this will reset the browser back to the in-app default. - private func resetBrowserPreferenceIfRequired() { - if availableBrowsers.filter({ $0.browserID == currentBrowserPreference }).count == 0 { - currentBrowserPreference = Browser.inApp.browserID - } - } - - /// The currently selected browser. - /// - Returns: `Browser` - func currentBrowser() -> Browser { - guard let browser = Browser.allCases.filter({ $0.browserID == currentBrowserPreference }).first else { - resetBrowserPreferenceIfRequired() - return currentBrowser() - } - return browser - } -} diff --git a/iOS/Settings/Settings.storyboard b/iOS/Settings/Settings.storyboard index 06b125e1b..9d7372ede 100644 --- a/iOS/Settings/Settings.storyboard +++ b/iOS/Settings/Settings.storyboard @@ -418,7 +418,7 @@ \(displayLink)" - d["external_link"] = externalLinkString + d["external_link_label"] = NSLocalizedString("Link:", comment: "Link") + d["external_link_stripped"] = externalLink.strippingHTTPOrHTTPSScheme + d["external_link"] = externalLink } else { + d["external_link_label"] = "" + d["external_link_stripped"] = "" d["external_link"] = "" } @@ -175,7 +232,7 @@ private extension ArticleRenderer { d["avatar_src"] = imageIconURLString } else { - d["avatars"] = "" + d["avatar_src"] = "" } if self.title.isEmpty { @@ -184,33 +241,22 @@ private extension ArticleRenderer { d["dateline_style"] = "articleDateline" } - var feedLink = "" - if let feedTitle = article.webFeed?.nameForDisplay { - feedLink = feedTitle - if let feedURL = article.webFeed?.homePageURL { - feedLink = feedLink.htmlByAddingLink(feedURL, className: "feedLink") - } - } - d["feedlink"] = feedLink - - let datePublished = article.logicalDatePublished - let longDate = dateString(datePublished, .long, .medium) - let mediumDate = dateString(datePublished, .medium, .short) - let shortDate = dateString(datePublished, .short, .short) - - if let permalink = article.url { - d["date_long"] = longDate.htmlByAddingLink(permalink) - d["date_medium"] = mediumDate.htmlByAddingLink(permalink) - d["date_short"] = shortDate.htmlByAddingLink(permalink) - } - else { - d["date_long"] = longDate - d["date_medium"] = mediumDate - d["date_short"] = shortDate - } + d["feed_link_title"] = article.webFeed?.nameForDisplay ?? "" + d["feed_link"] = article.webFeed?.homePageURL ?? "" d["byline"] = byline() + let datePublished = article.logicalDatePublished + d["datetime_long"] = Self.longDateTimeFormatter.string(from: datePublished) + d["datetime_medium"] = Self.mediumDateTimeFormatter.string(from: datePublished) + d["datetime_short"] = Self.shortDateTimeFormatter.string(from: datePublished) + d["date_long"] = Self.longDateFormatter.string(from: datePublished) + d["date_medium"] = Self.mediumDateFormatter.string(from: datePublished) + d["date_short"] = Self.shortDateFormatter.string(from: datePublished) + d["time_long"] = Self.longTimeFormatter.string(from: datePublished) + d["time_medium"] = Self.mediumTimeFormatter.string(from: datePublished) + d["time_short"] = Self.shortTimeFormatter.string(from: datePublished) + return d } @@ -265,13 +311,6 @@ private extension ArticleRenderer { return byline } - func dateString(_ date: Date, _ dateStyle: DateFormatter.Style, _ timeStyle: DateFormatter.Style) -> String { - let dateFormatter = DateFormatter() - dateFormatter.dateStyle = dateStyle - dateFormatter.timeStyle = timeStyle - return dateFormatter.string(from: date) - } - #if os(iOS) func styleSubstitutions() -> [String: String] { var d = [String: String]() diff --git a/Shared/Article Rendering/template.html b/Shared/Article Rendering/template.html index 2e14ed119..a8bbed925 100644 --- a/Shared/Article Rendering/template.html +++ b/Shared/Article Rendering/template.html @@ -1,15 +1,47 @@ + +
- +
[[feedlink]]
[[byline]]
[[feed_link_title]]
[[byline]]
diff --git a/Shared/Resources/Sepia.nnwtheme/template.html b/Shared/Resources/Sepia.nnwtheme/template.html index 2e14ed119..2b6461013 100644 --- a/Shared/Resources/Sepia.nnwtheme/template.html +++ b/Shared/Resources/Sepia.nnwtheme/template.html @@ -1,15 +1,15 @@
- +
[[feedlink]]
[[byline]]
[[feed_link_title]]
[[byline]]
From b43d8b6b280da99f0e73c3b5181c4e3ac7d33891 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Fri, 17 Sep 2021 15:59:43 -0500 Subject: [PATCH 118/169] Change reload so that the text size style can be used in more places. --- .../Detail/DetailWebViewController.swift | 15 +++++++++------ Shared/Article Rendering/main.js | 6 ------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Mac/MainWindow/Detail/DetailWebViewController.swift b/Mac/MainWindow/Detail/DetailWebViewController.swift index 55e3ed89e..b62b41dac 100644 --- a/Mac/MainWindow/Detail/DetailWebViewController.swift +++ b/Mac/MainWindow/Detail/DetailWebViewController.swift @@ -155,16 +155,12 @@ final class DetailWebViewController: NSViewController { @objc func userDefaultsDidChange(_ note: Notification) { if articleTextSize != AppDefaults.shared.articleTextSize { - articleTextSize = AppDefaults.shared.articleTextSize - webView.evaluateJavaScript("updateTextSize(\"\(articleTextSize.cssClass)\");") + reloadHTMLMaintainingScrollPosition() } } @objc func currentArticleThemeDidChangeNotification(_ note: Notification) { - fetchScrollInfo() { scrollInfo in - self.windowScrollY = scrollInfo?.offsetY - self.reloadHTML() - } + reloadHTMLMaintainingScrollPosition() } // MARK: Media Functions @@ -293,6 +289,13 @@ private extension DetailWebViewController { webView?.evaluateJavaScript("reloadArticleImage(\"\(imageSrc)\")") } } + + func reloadHTMLMaintainingScrollPosition() { + fetchScrollInfo() { scrollInfo in + self.windowScrollY = scrollInfo?.offsetY + self.reloadHTML() + } + } func reloadHTML() { delegate?.mouseDidExit(self) diff --git a/Shared/Article Rendering/main.js b/Shared/Article Rendering/main.js index e24c86fc9..13f90b638 100644 --- a/Shared/Article Rendering/main.js +++ b/Shared/Article Rendering/main.js @@ -132,12 +132,6 @@ function stopMediaPlayback() { }); } -function updateTextSize(cssClass) { - var bodyElement = document.getElementById("bodyContainer"); - bodyElement.classList.remove("smallText", "mediumText", "largeText", "xLargeText", "xxLargeText"); - bodyElement.classList.add(cssClass); -} - function error() { document.body.innerHTML = "error"; } From 42bcaf7e5537c13b9e84b335b84f4fa23f428495 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 18 Sep 2021 10:28:19 -0500 Subject: [PATCH 119/169] Extract Theme Import logic so that it can be reused --- NetNewsWire.xcodeproj/project.pbxproj | 4 ++ iOS/SceneCoordinator.swift | 77 +------------------- iOS/Settings/ArticleThemeImporter.swift | 96 +++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 76 deletions(-) create mode 100644 iOS/Settings/ArticleThemeImporter.swift diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 5a51bdb4a..3bf61e948 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -253,6 +253,7 @@ 5137C2E626F3F52D009EFEDB /* Sepia.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 5137C2E326F3F52D009EFEDB /* Sepia.nnwtheme */; }; 5137C2E726F3F52D009EFEDB /* Sepia.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 5137C2E326F3F52D009EFEDB /* Sepia.nnwtheme */; }; 5137C2E826F3F52D009EFEDB /* Sepia.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 5137C2E326F3F52D009EFEDB /* Sepia.nnwtheme */; }; + 5137C2EA26F63AE6009EFEDB /* ArticleThemeImporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5137C2E926F63AE6009EFEDB /* ArticleThemeImporter.swift */; }; 51386A8E25673277005F3762 /* AccountCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51386A8D25673276005F3762 /* AccountCell.swift */; }; 51386A8F25673277005F3762 /* AccountCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51386A8D25673276005F3762 /* AccountCell.swift */; }; 5138E93A24D33E5600AFF0FE /* RSTree in Frameworks */ = {isa = PBXBuildFile; productRef = 5138E93924D33E5600AFF0FE /* RSTree */; }; @@ -1656,6 +1657,7 @@ 51333D1524685D2E00EB5C91 /* AddRedditFeedWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddRedditFeedWindowController.swift; sourceTree = ""; }; 51333D3A2468615D00EB5C91 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Mac/Base.lproj/AddRedditFeedSheet.xib; sourceTree = SOURCE_ROOT; }; 5137C2E326F3F52D009EFEDB /* Sepia.nnwtheme */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Sepia.nnwtheme; sourceTree = ""; }; + 5137C2E926F63AE6009EFEDB /* ArticleThemeImporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleThemeImporter.swift; sourceTree = ""; }; 51386A8D25673276005F3762 /* AccountCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountCell.swift; sourceTree = ""; }; 51392D1A24AC19A000BE0D35 /* SidebarExpandedContainers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarExpandedContainers.swift; sourceTree = ""; }; 513C5CE6232571C2003D4054 /* NetNewsWire iOS Share Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "NetNewsWire iOS Share Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2801,6 +2803,7 @@ 519ED47924482AEB007F8E94 /* EnableExtensionPointViewController.swift */, 519ED455244828C3007F8E94 /* AddExtensionPointViewController.swift */, 510FFAB226EEA22C00F32265 /* ArticleThemesTableViewController.swift */, + 5137C2E926F63AE6009EFEDB /* ArticleThemeImporter.swift */, 516244E2241E19F000B61C47 /* ColorPaletteTableViewController.swift */, 516A09382360A2AE00EAE89B /* SettingsComboTableViewCell.swift */, 516A091D23609A3600EAE89B /* SettingsComboTableViewCell.xib */, @@ -5615,6 +5618,7 @@ 51C45268226508F600C03939 /* MasterFeedUnreadCountView.swift in Sources */, D3A39865246505DF00F9A366 /* FindInArticleActivity.swift in Sources */, 5183CCD0226E1E880010922C /* NonIntrinsicLabel.swift in Sources */, + 5137C2EA26F63AE6009EFEDB /* ArticleThemeImporter.swift in Sources */, 51C4529F22650A1900C03939 /* AuthorAvatarDownloader.swift in Sources */, 5108F6D22375EED2001ABC45 /* TimelineCustomizerViewController.swift in Sources */, 519E743D22C663F900A78E47 /* SceneDelegate.swift in Sources */, diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 08637a03f..16d63ee5c 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -1295,68 +1295,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { } func importTheme(filename: String) { - let theme = ArticleTheme(path: filename) - - let localizedTitleText = NSLocalizedString("Install theme “%@” by %@?", comment: "Theme message text") - let title = NSString.localizedStringWithFormat(localizedTitleText as NSString, theme.name, theme.creatorName) as String - - let localizedMessageText = NSLocalizedString("Author's Website:\n%@", comment: "Authors website") - let message = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.creatorHomePage) as String - - let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - - let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel") - alertController.addAction(UIAlertAction(title: cancelTitle, style: .cancel)) - - if let url = URL(string: theme.creatorHomePage) { - let visitSiteTitle = NSLocalizedString("Show Website", comment: "Show Website") - let visitSiteAction = UIAlertAction(title: visitSiteTitle, style: .default) { [weak self] action in - UIApplication.shared.open(url) - self?.importTheme(filename: filename) - } - alertController.addAction(visitSiteAction) - } - - func importTheme() { - do { - try ArticleThemesManager.shared.importTheme(filename: filename) - confirmImportSuccess(themeName: theme.name) - } catch { - rootSplitViewController.presentError(error) - } - } - - let installThemeTitle = NSLocalizedString("Install Theme", comment: "Install Theme") - let installThemeAction = UIAlertAction(title: installThemeTitle, style: .default) { [weak self] action in - - if ArticleThemesManager.shared.themeExists(filename: filename) { - let title = NSLocalizedString("Duplicate Theme", comment: "Duplicate Theme") - let localizedMessageText = NSLocalizedString("The theme “%@” already exists. Overwrite it?", comment: "Overwrite theme") - let message = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.name) as String - - let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - - let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel") - alertController.addAction(UIAlertAction(title: cancelTitle, style: .cancel)) - - let overwriteAction = UIAlertAction(title: NSLocalizedString("Overwrite", comment: "Overwrite"), style: .default) { action in - importTheme() - } - alertController.addAction(overwriteAction) - alertController.preferredAction = overwriteAction - - self?.rootSplitViewController.present(alertController, animated: true) - } else { - importTheme() - } - - } - - alertController.addAction(installThemeAction) - alertController.preferredAction = installThemeAction - - rootSplitViewController.present(alertController, animated: true) - + ArticleThemeImporter.importTheme(controller: rootSplitViewController, filename: filename); } } @@ -2363,18 +2302,4 @@ private extension SceneCoordinator { return true } - func confirmImportSuccess(themeName: String) { - let title = NSLocalizedString("Theme installed", comment: "Theme installed") - - let localizedMessageText = NSLocalizedString("The theme “%@” has been installed.", comment: "Theme installed") - let message = NSString.localizedStringWithFormat(localizedMessageText as NSString, themeName) as String - - let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) - - let doneTitle = NSLocalizedString("Done", comment: "Done") - alertController.addAction(UIAlertAction(title: doneTitle, style: .default)) - - rootSplitViewController.present(alertController, animated: true) - } - } diff --git a/iOS/Settings/ArticleThemeImporter.swift b/iOS/Settings/ArticleThemeImporter.swift new file mode 100644 index 000000000..7c2950622 --- /dev/null +++ b/iOS/Settings/ArticleThemeImporter.swift @@ -0,0 +1,96 @@ +// +// ArticleThemeImporter.swift +// NetNewsWire +// +// Created by Maurice Parker on 9/18/21. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import UIKit + +struct ArticleThemeImporter { + + static func importTheme(controller: UIViewController, filename: String) { + let theme = ArticleTheme(path: filename) + + let localizedTitleText = NSLocalizedString("Install theme “%@” by %@?", comment: "Theme message text") + let title = NSString.localizedStringWithFormat(localizedTitleText as NSString, theme.name, theme.creatorName) as String + + let localizedMessageText = NSLocalizedString("Author's Website:\n%@", comment: "Authors website") + let message = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.creatorHomePage) as String + + let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) + + let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel") + alertController.addAction(UIAlertAction(title: cancelTitle, style: .cancel)) + + if let url = URL(string: theme.creatorHomePage) { + let visitSiteTitle = NSLocalizedString("Show Website", comment: "Show Website") + let visitSiteAction = UIAlertAction(title: visitSiteTitle, style: .default) { action in + UIApplication.shared.open(url) + Self.importTheme(controller: controller, filename: filename) + } + alertController.addAction(visitSiteAction) + } + + func importTheme() { + do { + try ArticleThemesManager.shared.importTheme(filename: filename) + confirmImportSuccess(controller: controller, themeName: theme.name) + } catch { + controller.presentError(error) + } + } + + let installThemeTitle = NSLocalizedString("Install Theme", comment: "Install Theme") + let installThemeAction = UIAlertAction(title: installThemeTitle, style: .default) { action in + + if ArticleThemesManager.shared.themeExists(filename: filename) { + let title = NSLocalizedString("Duplicate Theme", comment: "Duplicate Theme") + let localizedMessageText = NSLocalizedString("The theme “%@” already exists. Overwrite it?", comment: "Overwrite theme") + let message = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.name) as String + + let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) + + let cancelTitle = NSLocalizedString("Cancel", comment: "Cancel") + alertController.addAction(UIAlertAction(title: cancelTitle, style: .cancel)) + + let overwriteAction = UIAlertAction(title: NSLocalizedString("Overwrite", comment: "Overwrite"), style: .default) { action in + importTheme() + } + alertController.addAction(overwriteAction) + alertController.preferredAction = overwriteAction + + controller.present(alertController, animated: true) + } else { + importTheme() + } + + } + + alertController.addAction(installThemeAction) + alertController.preferredAction = installThemeAction + + controller.present(alertController, animated: true) + + } + +} + +private extension ArticleThemeImporter { + + static func confirmImportSuccess(controller: UIViewController, themeName: String) { + let title = NSLocalizedString("Theme installed", comment: "Theme installed") + + let localizedMessageText = NSLocalizedString("The theme “%@” has been installed.", comment: "Theme installed") + let message = NSString.localizedStringWithFormat(localizedMessageText as NSString, themeName) as String + + let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) + + let doneTitle = NSLocalizedString("Done", comment: "Done") + alertController.addAction(UIAlertAction(title: doneTitle, style: .default)) + + controller.present(alertController, animated: true) + } + +} From 04d7ab188f7cb6d5f4bf738d5c08b0bb1d8e860a Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 18 Sep 2021 10:49:30 -0500 Subject: [PATCH 120/169] Add import button to Themes listing scene --- NetNewsWire.xcodeproj/project.pbxproj | 6 ++--- .../ArticleThemesTableViewController.swift | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 3bf61e948..ba2096bab 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -2797,14 +2797,14 @@ 5183CCEB227117C70010922C /* Settings */ = { isa = PBXGroup; children = ( - 51A16990235E10D600EB091F /* Settings.storyboard */, 51A16995235E10D600EB091F /* AboutViewController.swift */, 51A16992235E10D600EB091F /* AddAccountViewController.swift */, - 519ED47924482AEB007F8E94 /* EnableExtensionPointViewController.swift */, 519ED455244828C3007F8E94 /* AddExtensionPointViewController.swift */, - 510FFAB226EEA22C00F32265 /* ArticleThemesTableViewController.swift */, 5137C2E926F63AE6009EFEDB /* ArticleThemeImporter.swift */, + 510FFAB226EEA22C00F32265 /* ArticleThemesTableViewController.swift */, 516244E2241E19F000B61C47 /* ColorPaletteTableViewController.swift */, + 519ED47924482AEB007F8E94 /* EnableExtensionPointViewController.swift */, + 51A16990235E10D600EB091F /* Settings.storyboard */, 516A09382360A2AE00EAE89B /* SettingsComboTableViewCell.swift */, 516A091D23609A3600EAE89B /* SettingsComboTableViewCell.xib */, 516A093A2360A4A000EAE89B /* SettingsTableViewCell.xib */, diff --git a/iOS/Settings/ArticleThemesTableViewController.swift b/iOS/Settings/ArticleThemesTableViewController.swift index 7bc123341..1ae2ef2a3 100644 --- a/iOS/Settings/ArticleThemesTableViewController.swift +++ b/iOS/Settings/ArticleThemesTableViewController.swift @@ -13,13 +13,26 @@ import UIKit class ArticleThemesTableViewController: UITableViewController { override func viewDidLoad() { + let importBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(importTheme(_:))); + importBarButtonItem.title = NSLocalizedString("Import Theme", comment: "Import Theme"); + navigationItem.rightBarButtonItem = importBarButtonItem + NotificationCenter.default.addObserver(self, selector: #selector(articleThemeNamesDidChangeNotification(_:)), name: .ArticleThemeNamesDidChangeNotification, object: nil) } + // MARK: Notifications + @objc func articleThemeNamesDidChangeNotification(_ note: Notification) { tableView.reloadData() } + @objc func importTheme(_ sender: Any?) { + let docPicker = UIDocumentPickerViewController(documentTypes: ["com.ranchero.netnewswire.theme"], in: .import) + docPicker.delegate = self + docPicker.modalPresentationStyle = .formSheet + self.present(docPicker, animated: true) + } + // MARK: - Table view data source override func numberOfSections(in tableView: UITableView) -> Int { @@ -92,3 +105,14 @@ class ArticleThemesTableViewController: UITableViewController { return UISwipeActionsConfiguration(actions: [deleteAction]) } } + +// MARK: UIDocumentPickerDelegate + +extension ArticleThemesTableViewController: UIDocumentPickerDelegate { + + func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { + guard let url = urls.first else { return } + ArticleThemeImporter.importTheme(controller: self, filename: url.standardizedFileURL.path) + } + +} From 4fab4ffa7c7b2aa7a60564c1529b81fa1d9a2dd1 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sun, 19 Sep 2021 17:48:29 +0800 Subject: [PATCH 121/169] download themes using url scheme this build enables iOS functionality only. --- NetNewsWire.xcodeproj/project.pbxproj | 25 ++++++ .../xcshareddata/swiftpm/Package.resolved | 9 ++ Shared/ArticleStyles/ArticleThemePlist.swift | 25 ++++++ iOS/SceneDelegate.swift | 82 ++++++++++++++++--- 4 files changed, 131 insertions(+), 10 deletions(-) create mode 100644 Shared/ArticleStyles/ArticleThemePlist.swift diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 5a51bdb4a..eb9d1aa9b 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -112,6 +112,10 @@ 1799E6AA24C2F93F00511E91 /* InspectorPlatformModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1799E6A824C2F93F00511E91 /* InspectorPlatformModifier.swift */; }; 1799E6CD24C320D600511E91 /* InspectorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1799E6CC24C320D600511E91 /* InspectorModel.swift */; }; 1799E6CE24C320D600511E91 /* InspectorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1799E6CC24C320D600511E91 /* InspectorModel.swift */; }; + 179D280B26F6F93D003B2E0A /* Zip in Frameworks */ = {isa = PBXBuildFile; productRef = 179D280A26F6F93D003B2E0A /* Zip */; }; + 179D280D26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */; }; + 179D280E26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */; }; + 179D280F26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */; }; 179DB1DFBCF9177104B12E0F /* AccountsNewsBlurWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */; }; 179DB3CE822BFCC2D774D9F4 /* AccountsNewsBlurWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */; }; 17A1597C24E3DEDD005DA32A /* RSCore in Frameworks */ = {isa = PBXBuildFile; productRef = 17A1597B24E3DEDD005DA32A /* RSCore */; }; @@ -1591,6 +1595,7 @@ 17930ED324AF10EE00A9BA52 /* AddWebFeedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddWebFeedView.swift; sourceTree = ""; }; 1799E6A824C2F93F00511E91 /* InspectorPlatformModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectorPlatformModifier.swift; sourceTree = ""; }; 1799E6CC24C320D600511E91 /* InspectorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InspectorModel.swift; sourceTree = ""; }; + 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleThemePlist.swift; sourceTree = ""; }; 179DBBA2B22A659F81EED6F9 /* AccountsNewsBlurWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsNewsBlurWindowController.swift; sourceTree = ""; }; 17B223DB24AC24D2001E4592 /* TimelineLayoutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineLayoutView.swift; sourceTree = ""; }; 17D0682B2564F47E00C0B37E /* Localizable.stringsdict */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; path = Localizable.stringsdict; sourceTree = ""; }; @@ -2287,6 +2292,7 @@ files = ( 5138E94924D3416D00AFF0FE /* RSCore in Frameworks */, 5138E95824D3419000AFF0FE /* RSWeb in Frameworks */, + 179D280B26F6F93D003B2E0A /* Zip in Frameworks */, 516B695F24D2F33B00B5702F /* Account in Frameworks */, 5138E95224D3418100AFF0FE /* RSParser in Frameworks */, 5138E94C24D3417A00AFF0FE /* RSDatabase in Frameworks */, @@ -3446,6 +3452,7 @@ children = ( 849A97871ED9ECEF007D329B /* ArticleTheme.swift */, 849A97881ED9ECEF007D329B /* ArticleThemesManager.swift */, + 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */, ); name = "Article Styles"; path = Shared/ArticleStyles; @@ -4143,6 +4150,7 @@ 513F32732593EE6F0003048F /* ArticlesDatabase */, 513F32762593EE6F0003048F /* Secrets */, 513F32792593EE6F0003048F /* SyncDatabase */, + 179D280A26F6F93D003B2E0A /* Zip */, ); productName = "NetNewsWire-iOS"; productReference = 840D617C2029031C009BC708 /* NetNewsWire.app */; @@ -4315,6 +4323,7 @@ 51B0DF2324D2C7FA000AD99E /* XCRemoteSwiftPackageReference "RSParser" */, 17192AD82567B3D500AAEACA /* XCRemoteSwiftPackageReference "Sparkle-Binary" */, 519CA8E325841DB700EB079A /* XCRemoteSwiftPackageReference "plcrashreporter" */, + 179D280926F6F93D003B2E0A /* XCRemoteSwiftPackageReference "Zip" */, ); productRefGroup = 849C64611ED37A5D003D8FC0 /* Products */; projectDirPath = ""; @@ -5058,6 +5067,7 @@ 51E4991924A8090A00B667CB /* CacheCleaner.swift in Sources */, 51E498F724A8085D00B667CB /* SearchTimelineFeedDelegate.swift in Sources */, 175942AA24AD533200585066 /* RefreshInterval.swift in Sources */, + 179D280E26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */, 51E4993524A867E800B667CB /* AppNotifications.swift in Sources */, 6535ECFC2680F9FF00C01CB5 /* IconImageCache.swift in Sources */, 51C0515E24A77DF800194D5E /* MainApp.swift in Sources */, @@ -5169,6 +5179,7 @@ 51E499D924A912C200B667CB /* SceneModel.swift in Sources */, 51919FB424AAB97900541E64 /* FeedIconImageLoader.swift in Sources */, 1769E32524BC5A65000E1E8E /* AddAccountView.swift in Sources */, + 179D280F26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */, 51E4994A24A8734C00B667CB /* ExtensionPointManager.swift in Sources */, 514E6C0324AD29A300AC6F6E /* TimelineItemStatusView.swift in Sources */, 1724126A257BBEBB00ACCEBC /* AddFeedbinViewModel.swift in Sources */, @@ -5474,6 +5485,7 @@ 5186A635235EF3A800C97195 /* VibrantLabel.swift in Sources */, 51F85BF92274AA7B00C787DC /* UIBarButtonItem-Extensions.swift in Sources */, 51B62E68233186730085F949 /* IconView.swift in Sources */, + 179D280D26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */, 51C45296226509D300C03939 /* OPMLExporter.swift in Sources */, 51C45291226509C800C03939 /* SmartFeed.swift in Sources */, 51C452A722650A3D00C03939 /* RSImage-Extensions.swift in Sources */, @@ -6399,6 +6411,14 @@ minimumVersion = 2.0.0; }; }; + 179D280926F6F93D003B2E0A /* XCRemoteSwiftPackageReference "Zip" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/marmelroy/Zip.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.0.0; + }; + }; 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Ranchero-Software/RSCore.git"; @@ -6498,6 +6518,11 @@ package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; productName = RSCoreResources; }; + 179D280A26F6F93D003B2E0A /* Zip */ = { + isa = XCSwiftPackageProductDependency; + package = 179D280926F6F93D003B2E0A /* XCRemoteSwiftPackageReference "Zip" */; + productName = Zip; + }; 17A1597B24E3DEDD005DA32A /* RSCore */ = { isa = XCSwiftPackageProductDependency; package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; diff --git a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 612c7e32c..fc2737cdd 100644 --- a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -117,6 +117,15 @@ "revision": "9483a5d459b45c3ffd059f7b55f9638e268632fd", "version": "1.5.0" } + }, + { + "package": "Zip", + "repositoryURL": "https://github.com/marmelroy/Zip.git", + "state": { + "branch": null, + "revision": "bd19d974e8a38cc8d3a88c90c8a107386c3b8ccf", + "version": "2.1.1" + } } ] }, diff --git a/Shared/ArticleStyles/ArticleThemePlist.swift b/Shared/ArticleStyles/ArticleThemePlist.swift new file mode 100644 index 000000000..9525afa94 --- /dev/null +++ b/Shared/ArticleStyles/ArticleThemePlist.swift @@ -0,0 +1,25 @@ +// +// ArticleThemePlist.swift +// NetNewsWire +// +// Created by Stuart Breckenridge on 19/09/2021. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import Foundation + +public struct ArticleThemePlist: Codable { + public var name: String + public var themeIdentifier: String + public var creatorHomePage: String + public var creatorName: String + public var version: Int + + enum CodingKeys: String, CodingKey { + case name = "Name" + case themeIdentifier = "ThemeIdentifer" // FIXME: Spelling error! + case creatorHomePage = "CreatorHomePage" + case creatorName = "CreatorName" + case version = "Version" + } +} diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index 7ae1674e3..3b850f22a 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -9,15 +9,16 @@ import UIKit import UserNotifications import Account +import Zip -class SceneDelegate: UIResponder, UIWindowSceneDelegate { +class SceneDelegate: UIResponder, UIWindowSceneDelegate, URLSessionDownloadDelegate { - var window: UIWindow? + var window: UIWindow? var coordinator = SceneCoordinator() - // UIWindowScene delegate - - func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // UIWindowScene delegate + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { window = UIWindow(windowScene: scene as! UIWindowScene) window!.tintColor = AppAssets.primaryAccentColor @@ -46,12 +47,12 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { return } - if let userActivity = connectionOptions.userActivities.first ?? session.stateRestorationActivity { + if let userActivity = connectionOptions.userActivities.first ?? session.stateRestorationActivity { coordinator.handle(userActivity) } window!.makeKeyAndVisible() - } + } func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { appDelegate.resumeDatabaseProcessingIfNecessary() @@ -79,9 +80,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { coordinator.resetFocus() } - func stateRestorationActivity(for scene: UIScene) -> NSUserActivity? { + func stateRestorationActivity(for scene: UIScene) -> NSUserActivity? { return coordinator.stateRestorationActivity - } + } // API @@ -89,7 +90,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { appDelegate.resumeDatabaseProcessingIfNecessary() coordinator.handle(response) } - + func suspend() { coordinator.suspend() } @@ -165,8 +166,69 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { let filename = context.url.standardizedFileURL.path if filename.hasSuffix(ArticleTheme.nnwThemeSuffix) { self.coordinator.importTheme(filename: filename) + return } + // Handle theme URLs: netnewswire://theme/add?url={url} + guard let comps = URLComponents(url: context.url, resolvingAgainstBaseURL: false), + "theme" == comps.host, + let queryItems = comps.queryItems else { + return + } + + if let providedThemeURL = queryItems.first(where: { $0.name == "url" })?.value { + if let themeURL = URL(string: providedThemeURL) { + let request = URLRequest(url: themeURL) + let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil) + let downloadTask = session.downloadTask(with: request) + downloadTask.resume() + } else { + print("No theme URL") + return + } + } else { + return + } + + } + } + + // MARK: - URLSessionDownloadDelegate + + func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { + var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! + try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) + let tmpFileName = UUID().uuidString + ".zip" + downloadDirectory.appendPathComponent("\(tmpFileName)") + + do { + try FileManager.default.moveItem(at: location, to: downloadDirectory) + + var unzippedDir = downloadDirectory + unzippedDir = unzippedDir.deletingLastPathComponent() + unzippedDir.appendPathComponent("newtheme.nnwtheme") + + try Zip.unzipFile(downloadDirectory, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) + try FileManager.default.removeItem(at: downloadDirectory) + + let decoder = PropertyListDecoder() + let plistURL = URL(fileURLWithPath: unzippedDir.appendingPathComponent("Info.plist").path) + + let data = try Data(contentsOf: plistURL) + let plist = try decoder.decode(ArticleThemePlist.self, from: data) + + // rename + var renamedUnzippedDir = unzippedDir.deletingLastPathComponent() + renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") + if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { + try FileManager.default.removeItem(at: renamedUnzippedDir) + } + try FileManager.default.moveItem(at: unzippedDir, to: renamedUnzippedDir) + DispatchQueue.main.async { + self.coordinator.importTheme(filename: renamedUnzippedDir.path) + } + } catch { + print(error) } } From 7994b34551c85e1345889d81d0b1a570f93dfc00 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Sun, 19 Sep 2021 21:18:23 +0800 Subject: [PATCH 122/169] adds mac theme downloading --- Mac/AppDelegate.swift | 2 +- Mac/Resources/Info.plist | 1 + .../AppDelegate+Scriptability.swift | 58 +++++++++++++++++++ NetNewsWire.xcodeproj/project.pbxproj | 10 ++++ 4 files changed, 70 insertions(+), 1 deletion(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index d56800522..afdbbfd56 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -765,7 +765,7 @@ extension AppDelegate { } -private extension AppDelegate { +internal extension AppDelegate { func fireOldTimers() { // It’s possible there’s a refresh timer set to go off in the past. diff --git a/Mac/Resources/Info.plist b/Mac/Resources/Info.plist index ce803e9ed..be2d2bf9e 100644 --- a/Mac/Resources/Info.plist +++ b/Mac/Resources/Info.plist @@ -31,6 +31,7 @@ RSS Feed CFBundleURLSchemes + netnewswire feed feeds x-netnewswire-feed diff --git a/Mac/Scriptability/AppDelegate+Scriptability.swift b/Mac/Scriptability/AppDelegate+Scriptability.swift index 2b6b6f5db..81eba91c2 100644 --- a/Mac/Scriptability/AppDelegate+Scriptability.swift +++ b/Mac/Scriptability/AppDelegate+Scriptability.swift @@ -18,6 +18,7 @@ import Foundation import Articles +import Zip protocol AppDelegateAppleEvents { func installAppleEventHandlers() @@ -44,6 +45,63 @@ extension AppDelegate : AppDelegateAppleEvents { return } + // Handle themes + if urlString.hasPrefix("netnewswire://theme") { + guard let comps = URLComponents(string: urlString), + let queryItems = comps.queryItems, + let themeURLString = queryItems.first(where: { $0.name == "url" })?.value else { + return + } + + if let themeURL = URL(string: themeURLString) { + let request = URLRequest(url: themeURL) + let task = URLSession.shared.downloadTask(with: request) { location, response, error in + var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! + try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) + let tmpFileName = UUID().uuidString + ".zip" + downloadDirectory.appendPathComponent("\(tmpFileName)") + + if location == nil { + return + } + + do { + try FileManager.default.moveItem(at: location!, to: downloadDirectory) + + var unzippedDir = downloadDirectory + unzippedDir = unzippedDir.deletingLastPathComponent() + unzippedDir.appendPathComponent("newtheme.nnwtheme") + + try Zip.unzipFile(downloadDirectory, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) + try FileManager.default.removeItem(at: downloadDirectory) + + let decoder = PropertyListDecoder() + let plistURL = URL(fileURLWithPath: unzippedDir.appendingPathComponent("Info.plist").path) + + let data = try Data(contentsOf: plistURL) + let plist = try decoder.decode(ArticleThemePlist.self, from: data) + + // rename + var renamedUnzippedDir = unzippedDir.deletingLastPathComponent() + renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") + if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { + try FileManager.default.removeItem(at: renamedUnzippedDir) + } + try FileManager.default.moveItem(at: unzippedDir, to: renamedUnzippedDir) + DispatchQueue.main.async { + self.importTheme(filename: renamedUnzippedDir.path) + } + } catch { + print(error) + } + } + task.resume() + } + return + + } + + // Special case URL with specific scheme handler x-netnewswire-feed: intended to ensure we open // it regardless of which news reader may be set as the default let nnwScheme = "x-netnewswire-feed:" diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index eb9d1aa9b..1e1787b22 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -112,6 +112,8 @@ 1799E6AA24C2F93F00511E91 /* InspectorPlatformModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1799E6A824C2F93F00511E91 /* InspectorPlatformModifier.swift */; }; 1799E6CD24C320D600511E91 /* InspectorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1799E6CC24C320D600511E91 /* InspectorModel.swift */; }; 1799E6CE24C320D600511E91 /* InspectorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1799E6CC24C320D600511E91 /* InspectorModel.swift */; }; + 179C39EA26F76B0500D4E741 /* Zip in Frameworks */ = {isa = PBXBuildFile; productRef = 179C39E926F76B0500D4E741 /* Zip */; }; + 179C39EB26F76B3800D4E741 /* ArticleThemePlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */; }; 179D280B26F6F93D003B2E0A /* Zip in Frameworks */ = {isa = PBXBuildFile; productRef = 179D280A26F6F93D003B2E0A /* Zip */; }; 179D280D26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */; }; 179D280E26F73D83003B2E0A /* ArticleThemePlist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */; }; @@ -2319,6 +2321,7 @@ 51C4CFF624D37DD500AF9874 /* Secrets in Frameworks */, 51A737AE24DB19730015FA66 /* RSCore in Frameworks */, 51A737C824DB19CC0015FA66 /* RSParser in Frameworks */, + 179C39EA26F76B0500D4E741 /* Zip in Frameworks */, 51E4DAED2425F6940091EB5B /* CloudKit.framework in Frameworks */, 514C16E124D2EF38009A3AFA /* RSCoreResources in Frameworks */, 514C16CE24D2E63F009A3AFA /* Account in Frameworks */, @@ -4192,6 +4195,7 @@ 5132775D2590FC640064F1E7 /* Articles */, 513277602590FC640064F1E7 /* ArticlesDatabase */, 513277632590FC640064F1E7 /* SyncDatabase */, + 179C39E926F76B0500D4E741 /* Zip */, ); productName = NetNewsWire; productReference = 849C64601ED37A5D003D8FC0 /* NetNewsWire.app */; @@ -5815,6 +5819,7 @@ 510C418124E5D1AE008226FD /* ExtensionContainers.swift in Sources */, 51EC114C2149FE3300B296E3 /* FolderTreeMenu.swift in Sources */, 849ADEE42359817E000E1B81 /* NNW3ImportController.swift in Sources */, + 179C39EB26F76B3800D4E741 /* ArticleThemePlist.swift in Sources */, 849A97A31ED9F180007D329B /* FolderTreeControllerDelegate.swift in Sources */, 51126DA4225FDE2F00722696 /* RSImage-Extensions.swift in Sources */, 510C43F7243D035C009F70C3 /* ExtensionPoint.swift in Sources */, @@ -6518,6 +6523,11 @@ package = 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */; productName = RSCoreResources; }; + 179C39E926F76B0500D4E741 /* Zip */ = { + isa = XCSwiftPackageProductDependency; + package = 179D280926F6F93D003B2E0A /* XCRemoteSwiftPackageReference "Zip" */; + productName = Zip; + }; 179D280A26F6F93D003B2E0A /* Zip */ = { isa = XCSwiftPackageProductDependency; package = 179D280926F6F93D003B2E0A /* XCRemoteSwiftPackageReference "Zip" */; From 0166d47a1e8b344fabeceb8866e35c3f302b595a Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Mon, 20 Sep 2021 06:22:34 +0800 Subject: [PATCH 123/169] Add URL Scheme documentation --- Technotes/Themes.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Technotes/Themes.md diff --git a/Technotes/Themes.md b/Technotes/Themes.md new file mode 100644 index 000000000..741e5e963 --- /dev/null +++ b/Technotes/Themes.md @@ -0,0 +1,11 @@ +# Themes + +## Add Themes Directly to NetNewsWire +Theme developers: on iOS and macOS, themes can be opened directly in NetNewsWire using the below URL scheme: + +`netnewswire://theme/add?url={url}` + +When using this URL scheme the theme being shared must be zipped. + +Parameters: +- `url`: (mandatory, URL-encoded): The theme's location. From afd952fbc2212047e71b99c57d79488cf7319466 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Mon, 20 Sep 2021 09:36:09 +0800 Subject: [PATCH 124/169] refactors iOS theme downloads --- .../AppDelegate+Scriptability.swift | 1 - NetNewsWire.xcodeproj/project.pbxproj | 6 + .../ArticleTheme+Notifications.swift | 15 +++ iOS/SceneDelegate.swift | 104 +++++++++++------- 4 files changed, 85 insertions(+), 41 deletions(-) create mode 100644 Shared/ArticleStyles/ArticleTheme+Notifications.swift diff --git a/Mac/Scriptability/AppDelegate+Scriptability.swift b/Mac/Scriptability/AppDelegate+Scriptability.swift index 81eba91c2..b8ad7ee3d 100644 --- a/Mac/Scriptability/AppDelegate+Scriptability.swift +++ b/Mac/Scriptability/AppDelegate+Scriptability.swift @@ -60,7 +60,6 @@ extension AppDelegate : AppDelegateAppleEvents { try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) let tmpFileName = UUID().uuidString + ".zip" downloadDirectory.appendPathComponent("\(tmpFileName)") - if location == nil { return } diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 3ba5cf4f7..80ff1568c 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -11,6 +11,8 @@ 1701E1E725689D1E009453D8 /* Localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1701E1E625689D1E009453D8 /* Localized.swift */; }; 1704053424E5985A00A00787 /* SceneNavigationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1704053324E5985A00A00787 /* SceneNavigationModel.swift */; }; 1704053524E5985A00A00787 /* SceneNavigationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1704053324E5985A00A00787 /* SceneNavigationModel.swift */; }; + 17071EF026F8137400F5E71D /* ArticleTheme+Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17071EEF26F8137400F5E71D /* ArticleTheme+Notifications.swift */; }; + 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 */; }; @@ -1539,6 +1541,7 @@ 1701E1B62568983D009453D8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 1701E1E625689D1E009453D8 /* Localized.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Localized.swift; sourceTree = ""; }; 1704053324E5985A00A00787 /* SceneNavigationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneNavigationModel.swift; 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 = ""; }; 1717535524BADF33004498C6 /* GeneralPreferencesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeneralPreferencesModel.swift; sourceTree = ""; }; @@ -3459,6 +3462,7 @@ 849A97871ED9ECEF007D329B /* ArticleTheme.swift */, 849A97881ED9ECEF007D329B /* ArticleThemesManager.swift */, 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */, + 17071EEF26F8137400F5E71D /* ArticleTheme+Notifications.swift */, ); name = "Article Styles"; path = Shared/ArticleStyles; @@ -5625,6 +5629,7 @@ C5A6ED5223C9AF4300AB6BE2 /* TitleActivityItemSource.swift in Sources */, 17D7586F2679C21800B17787 /* OnePasswordExtension.m in Sources */, 51DC37092402F1470095D371 /* MasterFeedDataSourceOperation.swift in Sources */, + 17071EF126F8137400F5E71D /* ArticleTheme+Notifications.swift in Sources */, 51C4529B22650A1000C03939 /* FaviconDownloader.swift in Sources */, 84DEE56622C32CA4005FC42C /* SmartFeedDelegate.swift in Sources */, 512E09012268907400BDCFDD /* MasterFeedTableViewSectionHeader.swift in Sources */, @@ -5679,6 +5684,7 @@ 844B5B5B1FEA00FB00C7C76A /* TimelineKeyboardDelegate.swift in Sources */, 842E45DD1ED8C54B000A8B52 /* Browser.swift in Sources */, 84216D0322128B9D0049B9B9 /* DetailWebViewController.swift in Sources */, + 17071EF026F8137400F5E71D /* ArticleTheme+Notifications.swift in Sources */, 8444C8F21FED81840051386C /* OPMLExporter.swift in Sources */, 849A975E1ED9EB72007D329B /* MainWindowController.swift in Sources */, 84F2D53A1FC2308B00998D64 /* UnreadFeed.swift in Sources */, diff --git a/Shared/ArticleStyles/ArticleTheme+Notifications.swift b/Shared/ArticleStyles/ArticleTheme+Notifications.swift new file mode 100644 index 000000000..08337aab4 --- /dev/null +++ b/Shared/ArticleStyles/ArticleTheme+Notifications.swift @@ -0,0 +1,15 @@ +// +// ArticleTheme+Notifications.swift +// ArticleTheme+Notifications +// +// Created by Stuart Breckenridge on 20/09/2021. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import Foundation + +extension Notification.Name { + static let didBeginDownloadingTheme = Notification.Name("didBeginDownloadingTheme") + static let didEndDownloadingTheme = Notification.Name("didEndDownloadingTheme") + static let didEndDownloadingThemeWithError = Notification.Name("didEndDownloadingThemeWithError") +} diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index 3b850f22a..6658c3e55 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -11,7 +11,7 @@ import UserNotifications import Account import Zip -class SceneDelegate: UIResponder, UIWindowSceneDelegate, URLSessionDownloadDelegate { +class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow? var coordinator = SceneCoordinator() @@ -179,9 +179,29 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, URLSessionDownloadDeleg if let providedThemeURL = queryItems.first(where: { $0.name == "url" })?.value { if let themeURL = URL(string: providedThemeURL) { let request = URLRequest(url: themeURL) - let session = URLSession(configuration: .default, delegate: self, delegateQueue: nil) - let downloadTask = session.downloadTask(with: request) - downloadTask.resume() + + DispatchQueue.main.async { + NotificationCenter.default.post(name: .didBeginDownloadingTheme, object: nil) + } + let task = URLSession.shared.downloadTask(with: request) { [weak self] location, response, error in + guard let self = self, let location = location else { return } + self.createDownloadDirectoryIfRequired() + do { + let movedFileLocation = try self.moveTheme(from: location) + let unzippedFileLocation = try self.unzipFile(at: movedFileLocation) + let renamedFileLocation = try self.renameFileToThemeName(at: unzippedFileLocation) + DispatchQueue.main.async { + NotificationCenter.default.post(name: .didEndDownloadingTheme, object: nil) + self.coordinator.importTheme(filename: renamedFileLocation.path) + } + } catch { + DispatchQueue.main.async { + NotificationCenter.default.post(name: .didEndDownloadingThemeWithError, object: nil, userInfo: ["error" : error]) + self.showAlert(error) + } + } + } + task.resume() } else { print("No theme URL") return @@ -193,45 +213,49 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate, URLSessionDownloadDeleg } } - // MARK: - URLSessionDownloadDelegate - - func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) { - var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! + // MARK: - Theme Downloader + private func createDownloadDirectoryIfRequired() { + let downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) - let tmpFileName = UUID().uuidString + ".zip" - downloadDirectory.appendPathComponent("\(tmpFileName)") - - do { - try FileManager.default.moveItem(at: location, to: downloadDirectory) - - var unzippedDir = downloadDirectory - unzippedDir = unzippedDir.deletingLastPathComponent() - unzippedDir.appendPathComponent("newtheme.nnwtheme") - - try Zip.unzipFile(downloadDirectory, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) - try FileManager.default.removeItem(at: downloadDirectory) - - let decoder = PropertyListDecoder() - let plistURL = URL(fileURLWithPath: unzippedDir.appendingPathComponent("Info.plist").path) - - let data = try Data(contentsOf: plistURL) - let plist = try decoder.decode(ArticleThemePlist.self, from: data) - - // rename - var renamedUnzippedDir = unzippedDir.deletingLastPathComponent() - renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") - if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { - try FileManager.default.removeItem(at: renamedUnzippedDir) - } - try FileManager.default.moveItem(at: unzippedDir, to: renamedUnzippedDir) - DispatchQueue.main.async { - self.coordinator.importTheme(filename: renamedUnzippedDir.path) - } - } catch { - print(error) - } } + private func moveTheme(from location: URL) throws -> URL { + var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! + let tmpFileName = UUID().uuidString + ".zip" + downloadDirectory.appendPathComponent("\(tmpFileName)") + try FileManager.default.moveItem(at: location, to: downloadDirectory) + return downloadDirectory + } + + private func unzipFile(at location: URL) throws -> URL { + var unzippedDir = location.deletingLastPathComponent() + unzippedDir.appendPathComponent("newtheme.nnwtheme") + try Zip.unzipFile(location, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) + try FileManager.default.removeItem(at: location) + return unzippedDir + } + + private func renameFileToThemeName(at location: URL) throws -> URL { + let decoder = PropertyListDecoder() + let plistURL = URL(fileURLWithPath: location.appendingPathComponent("Info.plist").path) + let data = try Data(contentsOf: plistURL) + let plist = try decoder.decode(ArticleThemePlist.self, from: data) + var renamedUnzippedDir = location.deletingLastPathComponent() + renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") + if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { + try FileManager.default.removeItem(at: renamedUnzippedDir) + } + try FileManager.default.moveItem(at: location, to: renamedUnzippedDir) + return renamedUnzippedDir + } + + private func showAlert(_ error: Error) { + let alert = UIAlertController(title: NSLocalizedString("Error", comment: "Error"), + message: error.localizedDescription, + preferredStyle: .alert) + alert.addAction(UIAlertAction(title: NSLocalizedString("Dismiss", comment: "Dismiss"), style: .cancel, handler: nil)) + self.window?.rootViewController?.present(alert, animated: true, completion: nil) + } } private extension SceneDelegate { From eb8f27b457e45c843c5e55a64640882afb7e595a Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Mon, 20 Sep 2021 09:48:31 +0800 Subject: [PATCH 125/169] Removes files if unzip is not successful --- iOS/SceneDelegate.swift | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index 6658c3e55..54fc4dcc3 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -230,9 +230,14 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { private func unzipFile(at location: URL) throws -> URL { var unzippedDir = location.deletingLastPathComponent() unzippedDir.appendPathComponent("newtheme.nnwtheme") - try Zip.unzipFile(location, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) - try FileManager.default.removeItem(at: location) - return unzippedDir + do { + try Zip.unzipFile(location, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) + try FileManager.default.removeItem(at: location) + return unzippedDir + } catch { + try? FileManager.default.removeItem(at: location) + throw error + } } private func renameFileToThemeName(at location: URL) throws -> URL { From a1b01384d334ace1cd3b80e089c217960b0c82e7 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Mon, 20 Sep 2021 19:34:25 +0800 Subject: [PATCH 126/169] refactors downloader code for macOS & iOS More consistent code across platforms. --- Mac/AppDelegate.swift | 11 +++ .../AppDelegate+Scriptability.swift | 32 +-------- NetNewsWire.xcodeproj/project.pbxproj | 6 ++ .../ArticleThemeDownloader.swift | 70 +++++++++++++++++++ iOS/SceneDelegate.swift | 66 +++++------------ 5 files changed, 106 insertions(+), 79 deletions(-) create mode 100644 Shared/ArticleStyles/ArticleThemeDownloader.swift diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index afdbbfd56..b7b41e015 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -125,6 +125,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(inspectableObjectsDidChange(_:)), name: .InspectableObjectsDidChange, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(importDownloadedTheme(_:)), name: .didEndDownloadingTheme, object: nil) NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(didWakeNotification(_:)), name: NSWorkspace.didWakeNotification, object: nil) appDelegate = self @@ -375,6 +376,16 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, @objc func didWakeNotification(_ note: Notification) { fireOldTimers() } + + @objc func importDownloadedTheme(_ note: Notification) { + guard let userInfo = note.userInfo, + let url = userInfo["url"] as? URL else { + return + } + DispatchQueue.main.async { + self.importTheme(filename: url.path) + } + } // MARK: Main Window diff --git a/Mac/Scriptability/AppDelegate+Scriptability.swift b/Mac/Scriptability/AppDelegate+Scriptability.swift index b8ad7ee3d..41a7e22bc 100644 --- a/Mac/Scriptability/AppDelegate+Scriptability.swift +++ b/Mac/Scriptability/AppDelegate+Scriptability.swift @@ -56,40 +56,12 @@ extension AppDelegate : AppDelegateAppleEvents { if let themeURL = URL(string: themeURLString) { let request = URLRequest(url: themeURL) let task = URLSession.shared.downloadTask(with: request) { location, response, error in - var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! - try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) - let tmpFileName = UUID().uuidString + ".zip" - downloadDirectory.appendPathComponent("\(tmpFileName)") - if location == nil { + guard let location = location else { return } do { - try FileManager.default.moveItem(at: location!, to: downloadDirectory) - - var unzippedDir = downloadDirectory - unzippedDir = unzippedDir.deletingLastPathComponent() - unzippedDir.appendPathComponent("newtheme.nnwtheme") - - try Zip.unzipFile(downloadDirectory, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) - try FileManager.default.removeItem(at: downloadDirectory) - - let decoder = PropertyListDecoder() - let plistURL = URL(fileURLWithPath: unzippedDir.appendingPathComponent("Info.plist").path) - - let data = try Data(contentsOf: plistURL) - let plist = try decoder.decode(ArticleThemePlist.self, from: data) - - // rename - var renamedUnzippedDir = unzippedDir.deletingLastPathComponent() - renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") - if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { - try FileManager.default.removeItem(at: renamedUnzippedDir) - } - try FileManager.default.moveItem(at: unzippedDir, to: renamedUnzippedDir) - DispatchQueue.main.async { - self.importTheme(filename: renamedUnzippedDir.path) - } + try ArticleThemeDownloader.handleFile(at: location) } catch { print(error) } diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 80ff1568c..be116d4ca 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -140,6 +140,8 @@ 17D5F17124B0BC6700375168 /* SidebarToolbarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D5F17024B0BC6700375168 /* SidebarToolbarModel.swift */; }; 17D5F17224B0BC6700375168 /* SidebarToolbarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D5F17024B0BC6700375168 /* SidebarToolbarModel.swift */; }; 17D5F19524B0C1DD00375168 /* SidebarToolbarModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172199F024AB716900A31D04 /* SidebarToolbarModifier.swift */; }; + 17D643B126F8A436008D4C05 /* ArticleThemeDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D643B026F8A436008D4C05 /* ArticleThemeDownloader.swift */; }; + 17D643B226F8A436008D4C05 /* ArticleThemeDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D643B026F8A436008D4C05 /* ArticleThemeDownloader.swift */; }; 17D7586F2679C21800B17787 /* OnePasswordExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 17D7586E2679C21800B17787 /* OnePasswordExtension.m */; }; 17E0084625941887000C23F0 /* SizeCategories.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E0084525941887000C23F0 /* SizeCategories.swift */; }; 17E4DBD624BFC53E00FE462A /* AdvancedPreferencesModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E4DBD524BFC53E00FE462A /* AdvancedPreferencesModel.swift */; }; @@ -1608,6 +1610,7 @@ 17D232A724AFF10A0005F075 /* AddWebFeedModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddWebFeedModel.swift; sourceTree = ""; }; 17D3CEE2257C4D2300E74939 /* AddAccountSignUp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAccountSignUp.swift; sourceTree = ""; }; 17D5F17024B0BC6700375168 /* SidebarToolbarModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarToolbarModel.swift; sourceTree = ""; }; + 17D643B026F8A436008D4C05 /* ArticleThemeDownloader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleThemeDownloader.swift; sourceTree = ""; }; 17D7586C2679C21700B17787 /* NetNewsWire-iOS-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NetNewsWire-iOS-Bridging-Header.h"; sourceTree = ""; }; 17D7586D2679C21800B17787 /* OnePasswordExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OnePasswordExtension.h; sourceTree = ""; }; 17D7586E2679C21800B17787 /* OnePasswordExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OnePasswordExtension.m; sourceTree = ""; }; @@ -3461,6 +3464,7 @@ children = ( 849A97871ED9ECEF007D329B /* ArticleTheme.swift */, 849A97881ED9ECEF007D329B /* ArticleThemesManager.swift */, + 17D643B026F8A436008D4C05 /* ArticleThemeDownloader.swift */, 179D280C26F73D83003B2E0A /* ArticleThemePlist.swift */, 17071EEF26F8137400F5E71D /* ArticleTheme+Notifications.swift */, ); @@ -5589,6 +5593,7 @@ 512392BE24E33A3C00F11704 /* RedditSelectAccountTableViewController.swift in Sources */, 515A517B243E90260089E588 /* ExtensionPoint.swift in Sources */, 51C4529C22650A1000C03939 /* SingleFaviconDownloader.swift in Sources */, + 17D643B226F8A436008D4C05 /* ArticleThemeDownloader.swift in Sources */, 51E595A6228CC36500FCC42B /* ArticleStatusSyncTimer.swift in Sources */, 51F9F3F723DF6DB200A314FD /* ArticleIconSchemeHandler.swift in Sources */, 512392C524E3451400F11704 /* TwitterEnterDetailTableViewController.swift in Sources */, @@ -5721,6 +5726,7 @@ 8426118A1FCB67AA0086A189 /* WebFeedIconDownloader.swift in Sources */, 84C9FC7B22629E1200D921D6 /* PreferencesControlsBackgroundView.swift in Sources */, 84162A152038C12C00035290 /* MarkCommandValidationStatus.swift in Sources */, + 17D643B126F8A436008D4C05 /* ArticleThemeDownloader.swift in Sources */, 84E95D241FB1087500552D99 /* ArticlePasteboardWriter.swift in Sources */, 849A975B1ED9EB0D007D329B /* ArticleUtilities.swift in Sources */, 849ADEE8235981A0000E1B81 /* NNW3OpenPanelAccessoryViewController.swift in Sources */, diff --git a/Shared/ArticleStyles/ArticleThemeDownloader.swift b/Shared/ArticleStyles/ArticleThemeDownloader.swift new file mode 100644 index 000000000..8ee711cde --- /dev/null +++ b/Shared/ArticleStyles/ArticleThemeDownloader.swift @@ -0,0 +1,70 @@ +// +// ArticleThemeDownloader.swift +// ArticleThemeDownloader +// +// Created by Stuart Breckenridge on 20/09/2021. +// Copyright © 2021 Ranchero Software. All rights reserved. +// + +import Foundation +import Zip + +public struct ArticleThemeDownloader { + + static func handleFile(at location: URL) throws { + #if os(iOS) + createDownloadDirectoryIfRequired() + #endif + let movedFileLocation = try moveTheme(from: location) + let unzippedFileLocation = try unzipFile(at: movedFileLocation) + let renamedFile = try renameFileToThemeName(at: unzippedFileLocation) + NotificationCenter.default.post(name: .didEndDownloadingTheme, object: nil, userInfo: ["url" : renamedFile]) + } + + private static func createDownloadDirectoryIfRequired() { + let downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! + try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) + } + + private static func moveTheme(from location: URL) throws -> URL { + #if os(iOS) + var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! + #else + var downloadDirectory = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first! + #endif + let tmpFileName = UUID().uuidString + ".zip" + downloadDirectory.appendPathComponent("\(tmpFileName)") + try FileManager.default.moveItem(at: location, to: downloadDirectory) + return downloadDirectory + } + + private static func unzipFile(at location: URL) throws -> URL { + var unzippedDir = location.deletingLastPathComponent() + unzippedDir.appendPathComponent("newtheme.nnwtheme") + do { + try Zip.unzipFile(location, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) + try FileManager.default.removeItem(at: location) + return unzippedDir + } catch { + try? FileManager.default.removeItem(at: location) + throw error + } + } + + private static func renameFileToThemeName(at location: URL) throws -> URL { + let decoder = PropertyListDecoder() + let plistURL = URL(fileURLWithPath: location.appendingPathComponent("Info.plist").path) + let data = try Data(contentsOf: plistURL) + let plist = try decoder.decode(ArticleThemePlist.self, from: data) + var renamedUnzippedDir = location.deletingLastPathComponent() + renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") + if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { + try FileManager.default.removeItem(at: renamedUnzippedDir) + } + try FileManager.default.moveItem(at: location, to: renamedUnzippedDir) + return renamedUnzippedDir + } + + + +} diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index 54fc4dcc3..de24868d5 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -29,6 +29,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(importDownloadedTheme(_:)), name: .didEndDownloadingTheme, object: nil) + if let _ = connectionOptions.urlContexts.first?.url { window?.makeKeyAndVisible() self.scene(scene, openURLContexts: connectionOptions.urlContexts) @@ -184,19 +186,13 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { NotificationCenter.default.post(name: .didBeginDownloadingTheme, object: nil) } let task = URLSession.shared.downloadTask(with: request) { [weak self] location, response, error in - guard let self = self, let location = location else { return } - self.createDownloadDirectoryIfRequired() + guard let self = self, + let location = location else { return } + do { - let movedFileLocation = try self.moveTheme(from: location) - let unzippedFileLocation = try self.unzipFile(at: movedFileLocation) - let renamedFileLocation = try self.renameFileToThemeName(at: unzippedFileLocation) - DispatchQueue.main.async { - NotificationCenter.default.post(name: .didEndDownloadingTheme, object: nil) - self.coordinator.importTheme(filename: renamedFileLocation.path) - } + try ArticleThemeDownloader.handleFile(at: location) } catch { DispatchQueue.main.async { - NotificationCenter.default.post(name: .didEndDownloadingThemeWithError, object: nil, userInfo: ["error" : error]) self.showAlert(error) } } @@ -213,46 +209,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } } - // MARK: - Theme Downloader - private func createDownloadDirectoryIfRequired() { - let downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! - try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) - } - private func moveTheme(from location: URL) throws -> URL { - var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! - let tmpFileName = UUID().uuidString + ".zip" - downloadDirectory.appendPathComponent("\(tmpFileName)") - try FileManager.default.moveItem(at: location, to: downloadDirectory) - return downloadDirectory - } - - private func unzipFile(at location: URL) throws -> URL { - var unzippedDir = location.deletingLastPathComponent() - unzippedDir.appendPathComponent("newtheme.nnwtheme") - do { - try Zip.unzipFile(location, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) - try FileManager.default.removeItem(at: location) - return unzippedDir - } catch { - try? FileManager.default.removeItem(at: location) - throw error - } - } - - private func renameFileToThemeName(at location: URL) throws -> URL { - let decoder = PropertyListDecoder() - let plistURL = URL(fileURLWithPath: location.appendingPathComponent("Info.plist").path) - let data = try Data(contentsOf: plistURL) - let plist = try decoder.decode(ArticleThemePlist.self, from: data) - var renamedUnzippedDir = location.deletingLastPathComponent() - renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") - if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { - try FileManager.default.removeItem(at: renamedUnzippedDir) - } - try FileManager.default.moveItem(at: location, to: renamedUnzippedDir) - return renamedUnzippedDir - } private func showAlert(_ error: Error) { let alert = UIAlertController(title: NSLocalizedString("Error", comment: "Error"), @@ -295,4 +252,15 @@ private extension SceneDelegate { } } + @objc func importDownloadedTheme(_ note: Notification) { + guard let userInfo = note.userInfo, + let url = userInfo["url"] as? URL else { + return + } + + DispatchQueue.main.async { + self.coordinator.importTheme(filename: url.path) + } + } + } From 86d62cff33f55d00a5af990fe23e9b688b6ec8f8 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Mon, 20 Sep 2021 14:31:56 -0500 Subject: [PATCH 127/169] Populate the persistent identifier to make Notes aware of the current activity on Monterey. --- Shared/Activity/ActivityManager.swift | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Shared/Activity/ActivityManager.swift b/Shared/Activity/ActivityManager.swift index 266911e5d..ab369c087 100644 --- a/Shared/Activity/ActivityManager.swift +++ b/Shared/Activity/ActivityManager.swift @@ -175,13 +175,14 @@ private extension ActivityManager { activity.userInfo = [UserInfoKey.feedIdentifier: articleFetcherIdentifierUserInfo] activity.requiredUserInfoKeys = Set(activity.userInfo!.keys.map { $0 as! String }) + activity.persistentIdentifier = feed.feedID?.description ?? "" + #if os(iOS) activity.suggestedInvocationPhrase = title activity.isEligibleForPrediction = true - activity.persistentIdentifier = feed.feedID?.description ?? "" activity.contentAttributeSet?.relatedUniqueIdentifier = feed.feedID?.description ?? "" #endif - + return activity } @@ -200,11 +201,12 @@ private extension ActivityManager { activity.isEligibleForHandoff = true + activity.persistentIdentifier = ActivityManager.identifer(for: article) + #if os(iOS) activity.keywords = Set(makeKeywords(article)) activity.isEligibleForSearch = true activity.isEligibleForPrediction = false - activity.persistentIdentifier = ActivityManager.identifer(for: article) updateReadArticleSearchAttributes(with: article) #endif From 1e5fd6499eb525e9ac31708c7efeaad8b830fa21 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Tue, 21 Sep 2021 06:16:38 +0800 Subject: [PATCH 128/169] Corrects identifier spelling --- Shared/ArticleStyles/ArticleThemePlist.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shared/ArticleStyles/ArticleThemePlist.swift b/Shared/ArticleStyles/ArticleThemePlist.swift index 9525afa94..84ff5e23e 100644 --- a/Shared/ArticleStyles/ArticleThemePlist.swift +++ b/Shared/ArticleStyles/ArticleThemePlist.swift @@ -17,7 +17,7 @@ public struct ArticleThemePlist: Codable { enum CodingKeys: String, CodingKey { case name = "Name" - case themeIdentifier = "ThemeIdentifer" // FIXME: Spelling error! + case themeIdentifier = "ThemeIdentifier" case creatorHomePage = "CreatorHomePage" case creatorName = "CreatorName" case version = "Version" From 7986e1caee2b3bf75d2960cbf2ab346556e09f2f Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Tue, 21 Sep 2021 06:18:15 +0800 Subject: [PATCH 129/169] Adds optional theme description --- Shared/ArticleStyles/ArticleThemePlist.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Shared/ArticleStyles/ArticleThemePlist.swift b/Shared/ArticleStyles/ArticleThemePlist.swift index 84ff5e23e..a0f4e1886 100644 --- a/Shared/ArticleStyles/ArticleThemePlist.swift +++ b/Shared/ArticleStyles/ArticleThemePlist.swift @@ -11,6 +11,7 @@ import Foundation public struct ArticleThemePlist: Codable { public var name: String public var themeIdentifier: String + public var themeDescription: String? public var creatorHomePage: String public var creatorName: String public var version: Int @@ -18,6 +19,7 @@ public struct ArticleThemePlist: Codable { enum CodingKeys: String, CodingKey { case name = "Name" case themeIdentifier = "ThemeIdentifier" + case themeDescription = "ThemeDescription" case creatorHomePage = "CreatorHomePage" case creatorName = "CreatorName" case version = "Version" From 78e0595708889a7e0a646e9a3426599ee77f3676 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Tue, 21 Sep 2021 09:10:56 +0800 Subject: [PATCH 130/169] Various ThemeDownloader Updates - `try` added where applicable to ArticleTheme inits - `ArticleThemePlist` has fixed spelling of theme identifier and conforms to Equatable - `ArticleTheme` now uses `ArticleThemePlist` - `ArticleThemeDownloader` is now a class - `ArticleThemeDownloader` will now download themes to Application Support/NetNewsWire/Downloads on macOS and iOS. - `ArticleThemeDownloader` will remove downloaded themes from the Download folder when the application is closed. - macOS app delegate now observes for theme download fails - Error display code moved from SceneDelegate to SceneCoordinator so that it can use existing presentError on rootVC. --- Mac/AppDelegate.swift | 27 ++++- .../AppDelegate+Scriptability.swift | 4 +- Shared/ArticleStyles/ArticleTheme.swift | 17 +-- .../ArticleThemeDownloader.swift | 101 +++++++++++------- Shared/ArticleStyles/ArticleThemePlist.swift | 4 +- .../ArticleStyles/ArticleThemesManager.swift | 2 +- iOS/AppDelegate.swift | 1 + iOS/SceneCoordinator.swift | 26 ++++- iOS/SceneDelegate.swift | 29 +---- iOS/Settings/ArticleThemeImporter.swift | 6 +- .../ArticleThemesTableViewController.swift | 2 +- 11 files changed, 130 insertions(+), 89 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index b7b41e015..e3e44e4cb 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -126,6 +126,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(inspectableObjectsDidChange(_:)), name: .InspectableObjectsDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(importDownloadedTheme(_:)), name: .didEndDownloadingTheme, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(themeImportError(_:)), name: .didEndDownloadingThemeWithError, object: nil) NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(didWakeNotification(_:)), name: NSWorkspace.didWakeNotification, object: nil) appDelegate = self @@ -322,7 +323,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, func application(_ sender: NSApplication, openFile filename: String) -> Bool { guard filename.hasSuffix(ArticleTheme.nnwThemeSuffix) else { return false } - importTheme(filename: filename) + try? importTheme(filename: filename) return true } @@ -330,6 +331,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, shuttingDown = true saveState() + ArticleThemeDownloader.shared.cleanUp() + AccountManager.shared.sendArticleStatusAll() { self.isShutDownSyncDone = true } @@ -383,7 +386,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, return } DispatchQueue.main.async { - self.importTheme(filename: url.path) + try? self.importTheme(filename: url.path) } } @@ -808,10 +811,10 @@ internal extension AppDelegate { groupArticlesByFeedMenuItem.state = groupByFeedEnabled ? .on : .off } - func importTheme(filename: String) { + func importTheme(filename: String) throws { guard let window = mainWindowController?.window else { return } - let theme = ArticleTheme(path: filename) + let theme = try ArticleTheme(path: filename) let alert = NSAlert() alert.alertStyle = .informational @@ -906,6 +909,22 @@ internal extension AppDelegate { alert.beginSheetModal(for: window) } + @objc func themeImportError(_ note: Notification) { + guard let userInfo = note.userInfo, + let error = userInfo["error"] as? Error, + let window = mainWindowController?.window else { + return + } + DispatchQueue.main.async { + let alert = NSAlert() + alert.alertStyle = .warning + alert.messageText = NSLocalizedString("Theme Download Error", comment: "Theme download error") + alert.informativeText = NSLocalizedString("This theme cannot be downloaded due to the following error: \(error.localizedDescription)", comment: "Theme download error information") + alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) + alert.beginSheetModal(for: window) + } + } + } /* diff --git a/Mac/Scriptability/AppDelegate+Scriptability.swift b/Mac/Scriptability/AppDelegate+Scriptability.swift index 41a7e22bc..ffa1686bd 100644 --- a/Mac/Scriptability/AppDelegate+Scriptability.swift +++ b/Mac/Scriptability/AppDelegate+Scriptability.swift @@ -61,9 +61,9 @@ extension AppDelegate : AppDelegateAppleEvents { } do { - try ArticleThemeDownloader.handleFile(at: location) + try ArticleThemeDownloader.shared.handleFile(at: location) } catch { - print(error) + NotificationCenter.default.post(name: .didEndDownloadingThemeWithError, object: nil, userInfo: ["error": error]) } } task.resume() diff --git a/Shared/ArticleStyles/ArticleTheme.swift b/Shared/ArticleStyles/ArticleTheme.swift index a32e37af2..7d4e16bde 100644 --- a/Shared/ArticleStyles/ArticleTheme.swift +++ b/Shared/ArticleStyles/ArticleTheme.swift @@ -26,22 +26,22 @@ struct ArticleTheme: Equatable { } var creatorHomePage: String { - return info?["CreatorHomePage"] as? String ?? Self.unknownValue + return info?.creatorHomePage ?? Self.unknownValue } var creatorName: String { - return info?["CreatorName"] as? String ?? Self.unknownValue + return info?.creatorName ?? Self.unknownValue } var version: String { - return info?["Version"] as? String ?? "0.0" + return String(describing: info?.version ?? 0) } - private let info: NSDictionary? + private let info: ArticleThemePlist? init() { self.path = nil; - self.info = ["CreatorHomePage": "https://netnewswire.com/", "CreatorName": "Ranchero Software", "Version": "1.0"] + self.info = ArticleThemePlist(name: "Article Theme", themeIdentifier: "com.ranchero.netnewswire.theme.article", creatorHomePage: "https://netnewswire.com/", creatorName: "Ranchero Software", version: 1) let corePath = Bundle.main.path(forResource: "core", ofType: "css")! let stylesheetPath = Bundle.main.path(forResource: "stylesheet", ofType: "css")! @@ -51,12 +51,13 @@ struct ArticleTheme: Equatable { template = Self.stringAtPath(templatePath)! } - init(path: String) { + init(path: String) throws { self.path = path let infoPath = (path as NSString).appendingPathComponent("Info.plist") - self.info = NSDictionary(contentsOfFile: infoPath) - + let data = try Data(contentsOf: URL(fileURLWithPath: infoPath)) + self.info = try PropertyListDecoder().decode(ArticleThemePlist.self, from: data) + let corePath = Bundle.main.path(forResource: "core", ofType: "css")! let stylesheetPath = (path as NSString).appendingPathComponent("stylesheet.css") if let stylesheetCSS = Self.stringAtPath(stylesheetPath) { diff --git a/Shared/ArticleStyles/ArticleThemeDownloader.swift b/Shared/ArticleStyles/ArticleThemeDownloader.swift index 8ee711cde..1dd775ee1 100644 --- a/Shared/ArticleStyles/ArticleThemeDownloader.swift +++ b/Shared/ArticleStyles/ArticleThemeDownloader.swift @@ -9,62 +9,85 @@ import Foundation import Zip -public struct ArticleThemeDownloader { +public class ArticleThemeDownloader { - static func handleFile(at location: URL) throws { - #if os(iOS) + public enum ArticleThemeDownloaderError: LocalizedError { + case noThemeFile + + public var errorDescription: String? { + switch self { + case .noThemeFile: + return "There is no NetNewsWire theme available." + } + } + } + + + public static let shared = ArticleThemeDownloader() + private init() {} + + public func handleFile(at location: URL) throws { createDownloadDirectoryIfRequired() - #endif let movedFileLocation = try moveTheme(from: location) let unzippedFileLocation = try unzipFile(at: movedFileLocation) - let renamedFile = try renameFileToThemeName(at: unzippedFileLocation) - NotificationCenter.default.post(name: .didEndDownloadingTheme, object: nil, userInfo: ["url" : renamedFile]) + NotificationCenter.default.post(name: .didEndDownloadingTheme, object: nil, userInfo: ["url" : unzippedFileLocation]) } - private static func createDownloadDirectoryIfRequired() { - let downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! - try? FileManager.default.createDirectory(at: downloadDirectory, withIntermediateDirectories: true, attributes: nil) + + /// Creates `Application Support/NetNewsWire/Downloads` if needed. + private func createDownloadDirectoryIfRequired() { + try? FileManager.default.createDirectory(at: downloadDirectory(), withIntermediateDirectories: true, attributes: nil) } - private static func moveTheme(from location: URL) throws -> URL { - #if os(iOS) - var downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first! - #else - var downloadDirectory = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first! - #endif - let tmpFileName = UUID().uuidString + ".zip" - downloadDirectory.appendPathComponent("\(tmpFileName)") - try FileManager.default.moveItem(at: location, to: downloadDirectory) - return downloadDirectory + /// Moves the downloaded `.tmp` file to the `downloadDirectory` and renames it a `.zip` + /// - Parameter location: The temporary file location. + /// - Returns: Destination `URL`. + private func moveTheme(from location: URL) throws -> URL { + var tmpFileName = location.lastPathComponent + tmpFileName = tmpFileName.replacingOccurrences(of: ".tmp", with: ".zip") + let fileUrl = downloadDirectory().appendingPathComponent("\(tmpFileName)") + try FileManager.default.moveItem(at: location, to: fileUrl) + return fileUrl } - private static func unzipFile(at location: URL) throws -> URL { - var unzippedDir = location.deletingLastPathComponent() - unzippedDir.appendPathComponent("newtheme.nnwtheme") + /// Unzips the zip file + /// - Parameter location: Location of the zip archive. + /// - Returns: Enclosed `.nnwtheme` file. + private func unzipFile(at location: URL) throws -> URL { do { - try Zip.unzipFile(location, destination: unzippedDir, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) - try FileManager.default.removeItem(at: location) - return unzippedDir + let unzipDirectory = URL(fileURLWithPath: location.path.replacingOccurrences(of: ".zip", with: "")) + try Zip.unzipFile(location, destination: unzipDirectory, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) // Unzips to folder in Application Support/NetNewsWire/Downloads + try FileManager.default.removeItem(at: location) // Delete zip in Cache + let themeFilePath = FileManager.default.filenames(inFolder: unzipDirectory.path)?.first(where: { $0.contains(".nnwtheme") }) + if themeFilePath == nil { + throw ArticleThemeDownloaderError.noThemeFile + } + return URL(fileURLWithPath: unzipDirectory.appendingPathComponent(themeFilePath!).path) } catch { try? FileManager.default.removeItem(at: location) throw error } } - private static func renameFileToThemeName(at location: URL) throws -> URL { - let decoder = PropertyListDecoder() - let plistURL = URL(fileURLWithPath: location.appendingPathComponent("Info.plist").path) - let data = try Data(contentsOf: plistURL) - let plist = try decoder.decode(ArticleThemePlist.self, from: data) - var renamedUnzippedDir = location.deletingLastPathComponent() - renamedUnzippedDir.appendPathComponent(plist.name + ".nnwtheme") - if FileManager.default.fileExists(atPath: renamedUnzippedDir.path) { - try FileManager.default.removeItem(at: renamedUnzippedDir) - } - try FileManager.default.moveItem(at: location, to: renamedUnzippedDir) - return renamedUnzippedDir + /// The download directory used by the theme downloader: `Application Suppport/NetNewsWire/Downloads` + /// - Returns: `URL` + private func downloadDirectory() -> URL { + FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!.appendingPathComponent("NetNewsWire/Downloads", isDirectory: true) } - - + /// Removes downloaded themes, where themes == folders, from `Application Suppport/NetNewsWire/Downloads`. + public func cleanUp() { + guard let filenames = try? FileManager.default.contentsOfDirectory(atPath: downloadDirectory().path) else { + return + } + for path in filenames { + do { + if FileManager.default.isFolder(atPath: downloadDirectory().appendingPathComponent(path).path) { + try FileManager.default.removeItem(atPath: downloadDirectory().appendingPathComponent(path).path) + } + } catch { + print(error) + } + } + } } diff --git a/Shared/ArticleStyles/ArticleThemePlist.swift b/Shared/ArticleStyles/ArticleThemePlist.swift index a0f4e1886..f324cdbde 100644 --- a/Shared/ArticleStyles/ArticleThemePlist.swift +++ b/Shared/ArticleStyles/ArticleThemePlist.swift @@ -8,10 +8,9 @@ import Foundation -public struct ArticleThemePlist: Codable { +public struct ArticleThemePlist: Codable, Equatable { public var name: String public var themeIdentifier: String - public var themeDescription: String? public var creatorHomePage: String public var creatorName: String public var version: Int @@ -19,7 +18,6 @@ public struct ArticleThemePlist: Codable { enum CodingKeys: String, CodingKey { case name = "Name" case themeIdentifier = "ThemeIdentifier" - case themeDescription = "ThemeDescription" case creatorHomePage = "CreatorHomePage" case creatorName = "CreatorName" case version = "Version" diff --git a/Shared/ArticleStyles/ArticleThemesManager.swift b/Shared/ArticleStyles/ArticleThemesManager.swift index e49fe5d9f..0ce833f42 100644 --- a/Shared/ArticleStyles/ArticleThemesManager.swift +++ b/Shared/ArticleStyles/ArticleThemesManager.swift @@ -134,7 +134,7 @@ private extension ArticleThemesManager { return nil } - return ArticleTheme(path: path) + return try? ArticleTheme(path: path) } func defaultArticleTheme() -> ArticleTheme { diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index d93eaa6ed..807d1a340 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -338,6 +338,7 @@ private extension AppDelegate { AccountManager.shared.suspendNetworkAll() AccountManager.shared.suspendDatabaseAll() + ArticleThemeDownloader.shared.cleanUp() CoalescingQueue.standard.performCallsImmediately() for scene in UIApplication.shared.connectedScenes { diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 16d63ee5c..d0c9fea94 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -323,7 +323,8 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange(_:)), name: UserDefaults.didChangeNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(accountDidDownloadArticles(_:)), name: .AccountDidDownloadArticles, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground(_:)), name: UIApplication.willEnterForegroundNotification, object: nil) - + NotificationCenter.default.addObserver(self, selector: #selector(importDownloadedTheme(_:)), name: .didEndDownloadingTheme, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(themeDownloadDidFail(_:)), name: .didEndDownloadingThemeWithError, object: nil) } func start(for size: CGSize) -> UIViewController { @@ -587,6 +588,27 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { queueFetchAndMergeArticles() } } + + @objc func importDownloadedTheme(_ note: Notification) { + guard let userInfo = note.userInfo, + let url = userInfo["url"] as? URL else { + return + } + + DispatchQueue.main.async { + self.importTheme(filename: url.path) + } + } + + @objc func themeDownloadDidFail(_ note: Notification) { + guard let userInfo = note.userInfo, + let error = userInfo["error"] as? Error else { + return + } + DispatchQueue.main.async { + self.rootSplitViewController.presentError(error, dismiss: nil) + } + } // MARK: API @@ -1295,7 +1317,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { } func importTheme(filename: String) { - ArticleThemeImporter.importTheme(controller: rootSplitViewController, filename: filename); + try? ArticleThemeImporter.importTheme(controller: rootSplitViewController, filename: filename); } } diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index de24868d5..534cd0db2 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -29,8 +29,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(importDownloadedTheme(_:)), name: .didEndDownloadingTheme, object: nil) - if let _ = connectionOptions.urlContexts.first?.url { window?.makeKeyAndVisible() self.scene(scene, openURLContexts: connectionOptions.urlContexts) @@ -190,11 +188,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { let location = location else { return } do { - try ArticleThemeDownloader.handleFile(at: location) + try ArticleThemeDownloader.shared.handleFile(at: location) } catch { - DispatchQueue.main.async { - self.showAlert(error) - } + NotificationCenter.default.post(name: .didEndDownloadingThemeWithError, object: nil, userInfo: ["error": error]) } } task.resume() @@ -208,16 +204,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } } - - - - private func showAlert(_ error: Error) { - let alert = UIAlertController(title: NSLocalizedString("Error", comment: "Error"), - message: error.localizedDescription, - preferredStyle: .alert) - alert.addAction(UIAlertAction(title: NSLocalizedString("Dismiss", comment: "Dismiss"), style: .cancel, handler: nil)) - self.window?.rootViewController?.present(alert, animated: true, completion: nil) - } } private extension SceneDelegate { @@ -252,15 +238,6 @@ private extension SceneDelegate { } } - @objc func importDownloadedTheme(_ note: Notification) { - guard let userInfo = note.userInfo, - let url = userInfo["url"] as? URL else { - return - } - - DispatchQueue.main.async { - self.coordinator.importTheme(filename: url.path) - } - } + } diff --git a/iOS/Settings/ArticleThemeImporter.swift b/iOS/Settings/ArticleThemeImporter.swift index 7c2950622..135d19989 100644 --- a/iOS/Settings/ArticleThemeImporter.swift +++ b/iOS/Settings/ArticleThemeImporter.swift @@ -10,8 +10,8 @@ import UIKit struct ArticleThemeImporter { - static func importTheme(controller: UIViewController, filename: String) { - let theme = ArticleTheme(path: filename) + static func importTheme(controller: UIViewController, filename: String) throws { + let theme = try ArticleTheme(path: filename) let localizedTitleText = NSLocalizedString("Install theme “%@” by %@?", comment: "Theme message text") let title = NSString.localizedStringWithFormat(localizedTitleText as NSString, theme.name, theme.creatorName) as String @@ -28,7 +28,7 @@ struct ArticleThemeImporter { let visitSiteTitle = NSLocalizedString("Show Website", comment: "Show Website") let visitSiteAction = UIAlertAction(title: visitSiteTitle, style: .default) { action in UIApplication.shared.open(url) - Self.importTheme(controller: controller, filename: filename) + try? Self.importTheme(controller: controller, filename: filename) } alertController.addAction(visitSiteAction) } diff --git a/iOS/Settings/ArticleThemesTableViewController.swift b/iOS/Settings/ArticleThemesTableViewController.swift index 1ae2ef2a3..d8b7e4104 100644 --- a/iOS/Settings/ArticleThemesTableViewController.swift +++ b/iOS/Settings/ArticleThemesTableViewController.swift @@ -112,7 +112,7 @@ extension ArticleThemesTableViewController: UIDocumentPickerDelegate { func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { guard let url = urls.first else { return } - ArticleThemeImporter.importTheme(controller: self, filename: url.standardizedFileURL.path) + try? ArticleThemeImporter.importTheme(controller: self, filename: url.standardizedFileURL.path) } } From c29afd26771a7c4d7e0691543e964ddd23218fdf Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Tue, 21 Sep 2021 09:22:45 +0800 Subject: [PATCH 131/169] try? changed to try with error handling --- Mac/AppDelegate.swift | 162 +++++++++--------- .../AppDelegate+Scriptability.swift | 2 +- .../ArticleTheme+Notifications.swift | 2 +- .../ArticleStyles/ArticleThemesManager.swift | 9 +- iOS/SceneCoordinator.swift | 9 +- iOS/SceneDelegate.swift | 2 +- .../ArticleThemesTableViewController.swift | 6 +- 7 files changed, 106 insertions(+), 86 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index e3e44e4cb..69636e937 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -126,7 +126,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(inspectableObjectsDidChange(_:)), name: .InspectableObjectsDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(importDownloadedTheme(_:)), name: .didEndDownloadingTheme, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(themeImportError(_:)), name: .didEndDownloadingThemeWithError, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(themeImportError(_:)), name: .didFailToImportThemeWithError, object: nil) NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(didWakeNotification(_:)), name: NSWorkspace.didWakeNotification, object: nil) appDelegate = self @@ -811,88 +811,94 @@ internal extension AppDelegate { groupArticlesByFeedMenuItem.state = groupByFeedEnabled ? .on : .off } - func importTheme(filename: String) throws { + func importTheme(filename: String) { guard let window = mainWindowController?.window else { return } - let theme = try ArticleTheme(path: filename) - - let alert = NSAlert() - alert.alertStyle = .informational + do { + let theme = try ArticleTheme(path: filename) + let alert = NSAlert() + alert.alertStyle = .informational - let localizedMessageText = NSLocalizedString("Install theme “%@” by %@?", comment: "Theme message text") - alert.messageText = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.name, theme.creatorName) as String - - var attrs = [NSAttributedString.Key : Any]() - attrs[.font] = NSFont.systemFont(ofSize: NSFont.smallSystemFontSize) - attrs[.foregroundColor] = NSColor.textColor - - if #available(macOS 11.0, *) { - let titleParagraphStyle = NSMutableParagraphStyle() - titleParagraphStyle.alignment = .center - attrs[.paragraphStyle] = titleParagraphStyle - } - - let websiteText = NSMutableAttributedString() - websiteText.append(NSAttributedString(string: NSLocalizedString("Author's Website", comment: "Author's Website"), attributes: attrs)) - - if #available(macOS 11.0, *) { - websiteText.append(NSAttributedString(string: "\n")) - } else { - websiteText.append(NSAttributedString(string: " ")) - } - - attrs[.link] = theme.creatorHomePage - websiteText.append(NSAttributedString(string: theme.creatorHomePage, attributes: attrs)) - - let textViewWidth: CGFloat - if #available(macOS 11.0, *) { - textViewWidth = 200 - } else { - textViewWidth = 400 - } - - let textView = NSTextView(frame: CGRect(x: 0, y: 0, width: textViewWidth, height: 15)) - textView.isEditable = false - textView.drawsBackground = false - textView.textStorage?.setAttributedString(websiteText) - alert.accessoryView = textView - - alert.addButton(withTitle: NSLocalizedString("Install Theme", comment: "Install Theme")) - alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "Cancel Install Theme")) + let localizedMessageText = NSLocalizedString("Install theme “%@” by %@?", comment: "Theme message text") + alert.messageText = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.name, theme.creatorName) as String - func importTheme() { - do { - try ArticleThemesManager.shared.importTheme(filename: filename) - confirmImportSuccess(themeName: theme.name) - } catch { - NSApplication.shared.presentError(error) + var attrs = [NSAttributedString.Key : Any]() + attrs[.font] = NSFont.systemFont(ofSize: NSFont.smallSystemFontSize) + attrs[.foregroundColor] = NSColor.textColor + + if #available(macOS 11.0, *) { + let titleParagraphStyle = NSMutableParagraphStyle() + titleParagraphStyle.alignment = .center + attrs[.paragraphStyle] = titleParagraphStyle } + + let websiteText = NSMutableAttributedString() + websiteText.append(NSAttributedString(string: NSLocalizedString("Author's Website", comment: "Author's Website"), attributes: attrs)) + + if #available(macOS 11.0, *) { + websiteText.append(NSAttributedString(string: "\n")) + } else { + websiteText.append(NSAttributedString(string: " ")) + } + + attrs[.link] = theme.creatorHomePage + websiteText.append(NSAttributedString(string: theme.creatorHomePage, attributes: attrs)) + + let textViewWidth: CGFloat + if #available(macOS 11.0, *) { + textViewWidth = 200 + } else { + textViewWidth = 400 + } + + let textView = NSTextView(frame: CGRect(x: 0, y: 0, width: textViewWidth, height: 15)) + textView.isEditable = false + textView.drawsBackground = false + textView.textStorage?.setAttributedString(websiteText) + alert.accessoryView = textView + + alert.addButton(withTitle: NSLocalizedString("Install Theme", comment: "Install Theme")) + alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "Cancel Install Theme")) + + func importTheme() { + do { + try ArticleThemesManager.shared.importTheme(filename: filename) + confirmImportSuccess(themeName: theme.name) + } catch { + NSApplication.shared.presentError(error) + } + } + + alert.beginSheetModal(for: window) { result in + if result == NSApplication.ModalResponse.alertFirstButtonReturn { + + if ArticleThemesManager.shared.themeExists(filename: filename) { + let alert = NSAlert() + alert.alertStyle = .warning + + let localizedMessageText = NSLocalizedString("The theme “%@” already exists. Overwrite it?", comment: "Overwrite theme") + alert.messageText = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.name) as String + + alert.addButton(withTitle: NSLocalizedString("Overwrite", comment: "Overwrite")) + alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "Cancel Install Theme")) + + alert.beginSheetModal(for: window) { result in + if result == NSApplication.ModalResponse.alertFirstButtonReturn { + importTheme() + } + } + } else { + importTheme() + } + + } + } + } catch { + NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error" : error]) } - alert.beginSheetModal(for: window) { result in - if result == NSApplication.ModalResponse.alertFirstButtonReturn { - - if ArticleThemesManager.shared.themeExists(filename: filename) { - let alert = NSAlert() - alert.alertStyle = .warning - - let localizedMessageText = NSLocalizedString("The theme “%@” already exists. Overwrite it?", comment: "Overwrite theme") - alert.messageText = NSString.localizedStringWithFormat(localizedMessageText as NSString, theme.name) as String - - alert.addButton(withTitle: NSLocalizedString("Overwrite", comment: "Overwrite")) - alert.addButton(withTitle: NSLocalizedString("Cancel", comment: "Cancel Install Theme")) - - alert.beginSheetModal(for: window) { result in - if result == NSApplication.ModalResponse.alertFirstButtonReturn { - importTheme() - } - } - } else { - importTheme() - } - - } - } + + } func confirmImportSuccess(themeName: String) { @@ -918,8 +924,8 @@ internal extension AppDelegate { DispatchQueue.main.async { let alert = NSAlert() alert.alertStyle = .warning - alert.messageText = NSLocalizedString("Theme Download Error", comment: "Theme download error") - alert.informativeText = NSLocalizedString("This theme cannot be downloaded due to the following error: \(error.localizedDescription)", comment: "Theme download error information") + alert.messageText = NSLocalizedString("Theme Error", comment: "Theme download error") + alert.informativeText = NSLocalizedString("This theme cannot be imported due to the following error: \(error.localizedDescription)", comment: "Theme download error information") alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) alert.beginSheetModal(for: window) } diff --git a/Mac/Scriptability/AppDelegate+Scriptability.swift b/Mac/Scriptability/AppDelegate+Scriptability.swift index ffa1686bd..132fe26be 100644 --- a/Mac/Scriptability/AppDelegate+Scriptability.swift +++ b/Mac/Scriptability/AppDelegate+Scriptability.swift @@ -63,7 +63,7 @@ extension AppDelegate : AppDelegateAppleEvents { do { try ArticleThemeDownloader.shared.handleFile(at: location) } catch { - NotificationCenter.default.post(name: .didEndDownloadingThemeWithError, object: nil, userInfo: ["error": error]) + NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error": error]) } } task.resume() diff --git a/Shared/ArticleStyles/ArticleTheme+Notifications.swift b/Shared/ArticleStyles/ArticleTheme+Notifications.swift index 08337aab4..4c2391ff4 100644 --- a/Shared/ArticleStyles/ArticleTheme+Notifications.swift +++ b/Shared/ArticleStyles/ArticleTheme+Notifications.swift @@ -11,5 +11,5 @@ import Foundation extension Notification.Name { static let didBeginDownloadingTheme = Notification.Name("didBeginDownloadingTheme") static let didEndDownloadingTheme = Notification.Name("didEndDownloadingTheme") - static let didEndDownloadingThemeWithError = Notification.Name("didEndDownloadingThemeWithError") + static let didFailToImportThemeWithError = Notification.Name("didFailToImportThemeWithError") } diff --git a/Shared/ArticleStyles/ArticleThemesManager.swift b/Shared/ArticleStyles/ArticleThemesManager.swift index 0ce833f42..6e2b6078c 100644 --- a/Shared/ArticleStyles/ArticleThemesManager.swift +++ b/Shared/ArticleStyles/ArticleThemesManager.swift @@ -133,8 +133,13 @@ private extension ArticleThemesManager { guard let path = pathForThemeName(themeName, folder: folderPath) else { return nil } - - return try? ArticleTheme(path: path) + do { + return try ArticleTheme(path: path) + } catch { + NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error": error]) + return nil + } + } func defaultArticleTheme() -> ArticleTheme { diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index d0c9fea94..f3a2c1abc 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -324,7 +324,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { NotificationCenter.default.addObserver(self, selector: #selector(accountDidDownloadArticles(_:)), name: .AccountDidDownloadArticles, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground(_:)), name: UIApplication.willEnterForegroundNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(importDownloadedTheme(_:)), name: .didEndDownloadingTheme, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(themeDownloadDidFail(_:)), name: .didEndDownloadingThemeWithError, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(themeDownloadDidFail(_:)), name: .didFailToImportThemeWithError, object: nil) } func start(for size: CGSize) -> UIViewController { @@ -1317,7 +1317,12 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { } func importTheme(filename: String) { - try? ArticleThemeImporter.importTheme(controller: rootSplitViewController, filename: filename); + do { + try ArticleThemeImporter.importTheme(controller: rootSplitViewController, filename: filename) + } catch { + NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error" : error]) + } + } } diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index 534cd0db2..af4069522 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -190,7 +190,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { do { try ArticleThemeDownloader.shared.handleFile(at: location) } catch { - NotificationCenter.default.post(name: .didEndDownloadingThemeWithError, object: nil, userInfo: ["error": error]) + NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error": error]) } } task.resume() diff --git a/iOS/Settings/ArticleThemesTableViewController.swift b/iOS/Settings/ArticleThemesTableViewController.swift index d8b7e4104..26e28944f 100644 --- a/iOS/Settings/ArticleThemesTableViewController.swift +++ b/iOS/Settings/ArticleThemesTableViewController.swift @@ -112,7 +112,11 @@ extension ArticleThemesTableViewController: UIDocumentPickerDelegate { func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { guard let url = urls.first else { return } - try? ArticleThemeImporter.importTheme(controller: self, filename: url.standardizedFileURL.path) + do { + try ArticleThemeImporter.importTheme(controller: self, filename: url.standardizedFileURL.path) + } catch { + NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error": error]) + } } } From 82a62712ced895aca17a83cacc9aac2298562fe0 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Tue, 21 Sep 2021 10:43:12 +0800 Subject: [PATCH 132/169] Better error messages for decoding issues --- Mac/AppDelegate.swift | 25 ++++++++++++++--- NetNewsWire.xcodeproj/project.pbxproj | 4 +-- .../xcshareddata/swiftpm/Package.resolved | 4 +-- Shared/ArticleStyles/ArticleTheme.swift | 27 ++++++++++--------- iOS/SceneDelegate.swift | 2 +- .../UIViewController-Extensions.swift | 17 ++++++++++++ 6 files changed, 58 insertions(+), 21 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index 69636e937..ebf1bd30d 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -323,7 +323,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, func application(_ sender: NSApplication, openFile filename: String) -> Bool { guard filename.hasSuffix(ArticleTheme.nnwThemeSuffix) else { return false } - try? importTheme(filename: filename) + importTheme(filename: filename) return true } @@ -386,7 +386,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, return } DispatchQueue.main.async { - try? self.importTheme(filename: url.path) + self.importTheme(filename: url.path) } } @@ -921,11 +921,30 @@ internal extension AppDelegate { let window = mainWindowController?.window else { return } + + var informativeText: String = "" + if let decodingError = error as? DecodingError { + switch decodingError { + case .typeMismatch(let type, _): + informativeText = "Type '\(type)' mismatch." + case .valueNotFound(let value, _): + informativeText = "Value '\(value)' not found." + case .keyNotFound(let codingKey, _): + informativeText = "Key '\(codingKey.stringValue)' not found." + case .dataCorrupted( _): + informativeText = error.localizedDescription + default: + informativeText = error.localizedDescription + } + } else { + informativeText = error.localizedDescription + } + DispatchQueue.main.async { let alert = NSAlert() alert.alertStyle = .warning alert.messageText = NSLocalizedString("Theme Error", comment: "Theme download error") - alert.informativeText = NSLocalizedString("This theme cannot be imported due to the following error: \(error.localizedDescription)", comment: "Theme download error information") + alert.informativeText = NSLocalizedString("This theme cannot be imported due to the following error: \(informativeText)", comment: "Theme download error information") alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) alert.beginSheetModal(for: window) } diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index be116d4ca..7d1644d2c 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -6436,8 +6436,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/marmelroy/Zip.git"; requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.0.0; + kind = revision; + revision = 059e7346082d02de16220cd79df7db18ddeba8c3; }; }; 5102AE4324D17E820050839C /* XCRemoteSwiftPackageReference "RSCore" */ = { diff --git a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index fc2737cdd..dc8075713 100644 --- a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -123,8 +123,8 @@ "repositoryURL": "https://github.com/marmelroy/Zip.git", "state": { "branch": null, - "revision": "bd19d974e8a38cc8d3a88c90c8a107386c3b8ccf", - "version": "2.1.1" + "revision": "059e7346082d02de16220cd79df7db18ddeba8c3", + "version": null } } ] diff --git a/Shared/ArticleStyles/ArticleTheme.swift b/Shared/ArticleStyles/ArticleTheme.swift index 7d4e16bde..dc03e816f 100644 --- a/Shared/ArticleStyles/ArticleTheme.swift +++ b/Shared/ArticleStyles/ArticleTheme.swift @@ -9,13 +9,13 @@ import Foundation struct ArticleTheme: Equatable { - + static let defaultTheme = ArticleTheme() static let nnwThemeSuffix = ".nnwtheme" - + private static let defaultThemeName = NSLocalizedString("Default", comment: "Default") private static let unknownValue = NSLocalizedString("Unknown", comment: "Unknown Value") - + let path: String? let template: String? let css: String? @@ -38,26 +38,27 @@ struct ArticleTheme: Equatable { } private let info: ArticleThemePlist? - + init() { self.path = nil; self.info = ArticleThemePlist(name: "Article Theme", themeIdentifier: "com.ranchero.netnewswire.theme.article", creatorHomePage: "https://netnewswire.com/", creatorName: "Ranchero Software", version: 1) - + let corePath = Bundle.main.path(forResource: "core", ofType: "css")! let stylesheetPath = Bundle.main.path(forResource: "stylesheet", ofType: "css")! css = Self.stringAtPath(corePath)! + "\n" + Self.stringAtPath(stylesheetPath)! - + let templatePath = Bundle.main.path(forResource: "template", ofType: "html")! template = Self.stringAtPath(templatePath)! } - + init(path: String) throws { self.path = path - + let infoPath = (path as NSString).appendingPathComponent("Info.plist") let data = try Data(contentsOf: URL(fileURLWithPath: infoPath)) self.info = try PropertyListDecoder().decode(ArticleThemePlist.self, from: data) + let corePath = Bundle.main.path(forResource: "core", ofType: "css")! let stylesheetPath = (path as NSString).appendingPathComponent("stylesheet.css") if let stylesheetCSS = Self.stringAtPath(stylesheetPath) { @@ -65,7 +66,7 @@ struct ArticleTheme: Equatable { } else { self.css = nil } - + let templatePath = (path as NSString).appendingPathComponent("template.html") self.template = Self.stringAtPath(templatePath) } @@ -74,22 +75,22 @@ struct ArticleTheme: Equatable { if !FileManager.default.fileExists(atPath: f) { return nil } - + if let s = try? NSString(contentsOfFile: f, usedEncoding: nil) as String { return s } return nil } - + static func filenameWithThemeSuffixRemoved(_ filename: String) -> String { return filename.stripping(suffix: Self.nnwThemeSuffix) } - + static func themeNameForPath(_ f: String) -> String { let filename = (f as NSString).lastPathComponent return filenameWithThemeSuffixRemoved(filename) } - + static func pathIsPathForThemeName(_ themeName: String, path: String) -> Bool { let filename = (path as NSString).lastPathComponent return filenameWithThemeSuffixRemoved(filename) == themeName diff --git a/iOS/SceneDelegate.swift b/iOS/SceneDelegate.swift index af4069522..6812578ac 100644 --- a/iOS/SceneDelegate.swift +++ b/iOS/SceneDelegate.swift @@ -184,7 +184,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { NotificationCenter.default.post(name: .didBeginDownloadingTheme, object: nil) } let task = URLSession.shared.downloadTask(with: request) { [weak self] location, response, error in - guard let self = self, + guard let location = location else { return } do { diff --git a/iOS/UIKit Extensions/UIViewController-Extensions.swift b/iOS/UIKit Extensions/UIViewController-Extensions.swift index a21bc05eb..9d06d7609 100644 --- a/iOS/UIKit Extensions/UIViewController-Extensions.swift +++ b/iOS/UIKit Extensions/UIViewController-Extensions.swift @@ -15,6 +15,23 @@ extension UIViewController { func presentError(_ error: Error, dismiss: (() -> Void)? = nil) { if let accountError = error as? AccountError, accountError.isCredentialsError { presentAccountError(accountError, dismiss: dismiss) + } else if let decodingError = error as? DecodingError { + let errorTitle = NSLocalizedString("Error", comment: "Error") + switch decodingError { + case .typeMismatch(let type, _): + let str = "Type '\(type)' mismatch." + presentError(title: errorTitle, message: str, dismiss: dismiss) + case .valueNotFound(let value, _): + let str = "Value '\(value)' not found." + presentError(title: errorTitle, message: str, dismiss: dismiss) + case .keyNotFound(let codingKey, _): + let str = "Key '\(codingKey.stringValue)' not found." + presentError(title: errorTitle, message: str, dismiss: dismiss) + case .dataCorrupted( _): + presentError(title: errorTitle, message: error.localizedDescription, dismiss: dismiss) + default: + presentError(title: errorTitle, message: error.localizedDescription, dismiss: dismiss) + } } else { let errorTitle = NSLocalizedString("Error", comment: "Error") presentError(title: errorTitle, message: error.localizedDescription, dismiss: dismiss) From 94ed186b8cc67f32c0668f3d4e69f79ed86d7bc9 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Wed, 22 Sep 2021 09:17:48 +0800 Subject: [PATCH 133/169] Perfoms search of directory for theme file. --- .../ArticleStyles/ArticleThemeDownloader.swift | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Shared/ArticleStyles/ArticleThemeDownloader.swift b/Shared/ArticleStyles/ArticleThemeDownloader.swift index 1dd775ee1..0e94437ee 100644 --- a/Shared/ArticleStyles/ArticleThemeDownloader.swift +++ b/Shared/ArticleStyles/ArticleThemeDownloader.swift @@ -58,7 +58,7 @@ public class ArticleThemeDownloader { let unzipDirectory = URL(fileURLWithPath: location.path.replacingOccurrences(of: ".zip", with: "")) try Zip.unzipFile(location, destination: unzipDirectory, overwrite: true, password: nil, progress: nil, fileOutputHandler: nil) // Unzips to folder in Application Support/NetNewsWire/Downloads try FileManager.default.removeItem(at: location) // Delete zip in Cache - let themeFilePath = FileManager.default.filenames(inFolder: unzipDirectory.path)?.first(where: { $0.contains(".nnwtheme") }) + let themeFilePath = findThemeFile(in: unzipDirectory.path) if themeFilePath == nil { throw ArticleThemeDownloaderError.noThemeFile } @@ -69,6 +69,22 @@ public class ArticleThemeDownloader { } } + + /// Performs a deep search of the unzipped direcotry to find the theme file. + /// - Parameter searchPath: directory to search + /// - Returns: optional `String` + private func findThemeFile(in searchPath: String) -> String? { + if let directoryContents = FileManager.default.enumerator(atPath: searchPath) { + while let file = directoryContents.nextObject() as? String { + if file.hasSuffix(".nnwtheme") { + return file + } + } + } + + return nil + } + /// The download directory used by the theme downloader: `Application Suppport/NetNewsWire/Downloads` /// - Returns: `URL` private func downloadDirectory() -> URL { From 95579e015d8d2e9f6fbe4d93704e5799ce6304c1 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 22 Sep 2021 11:34:12 -0500 Subject: [PATCH 134/169] Added the Appanoose theme --- NetNewsWire.xcodeproj/project.pbxproj | 12 + .../Resources/Appanoose.nnwtheme/Info.plist | 16 + .../Appanoose.nnwtheme/stylesheet.css | 538 ++++++++++++++++++ .../Appanoose.nnwtheme/template.html | 56 ++ 4 files changed, 622 insertions(+) create mode 100644 Shared/Resources/Appanoose.nnwtheme/Info.plist create mode 100644 Shared/Resources/Appanoose.nnwtheme/stylesheet.css create mode 100644 Shared/Resources/Appanoose.nnwtheme/template.html diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 7d1644d2c..392329d4b 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -629,6 +629,11 @@ 51DC37072402153E0095D371 /* UpdateSelectionOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51DC37062402153E0095D371 /* UpdateSelectionOperation.swift */; }; 51DC37092402F1470095D371 /* MasterFeedDataSourceOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51DC37082402F1470095D371 /* MasterFeedDataSourceOperation.swift */; }; 51DC370B2405BC9A0095D371 /* PreloadedWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51DC370A2405BC9A0095D371 /* PreloadedWebView.swift */; }; + 51DEE81226FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; + 51DEE81326FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; + 51DEE81426FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; + 51DEE81526FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; + 51DEE81626FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; 51E0614525A5A28E00194066 /* Articles in Frameworks */ = {isa = PBXBuildFile; productRef = 51E0614425A5A28E00194066 /* Articles */; }; 51E0614625A5A28E00194066 /* Articles in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51E0614425A5A28E00194066 /* Articles */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 51E0614825A5A28E00194066 /* ArticlesDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 51E0614725A5A28E00194066 /* ArticlesDatabase */; }; @@ -1888,6 +1893,7 @@ 51DC37062402153E0095D371 /* UpdateSelectionOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpdateSelectionOperation.swift; sourceTree = ""; }; 51DC37082402F1470095D371 /* MasterFeedDataSourceOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterFeedDataSourceOperation.swift; sourceTree = ""; }; 51DC370A2405BC9A0095D371 /* PreloadedWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreloadedWebView.swift; sourceTree = ""; }; + 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Appanoose.nnwtheme; sourceTree = ""; }; 51E36E70239D6610006F47A5 /* AddFeedSelectFolderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddFeedSelectFolderTableViewCell.swift; sourceTree = ""; }; 51E36E8B239D6765006F47A5 /* AddFeedSelectFolderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AddFeedSelectFolderTableViewCell.xib; sourceTree = ""; }; 51E3EB32229AB02C00645299 /* ErrorHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorHandler.swift; sourceTree = ""; }; @@ -2631,6 +2637,7 @@ 845479871FEB77C000AD8B59 /* TimelineKeyboardShortcuts.plist */, 5127B237222B4849006D641D /* DetailKeyboardShortcuts.plist */, 5137C2E326F3F52D009EFEDB /* Sepia.nnwtheme */, + 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */, ); path = Resources; sourceTree = ""; @@ -4426,6 +4433,7 @@ 5177475D24B39AD500EB0F74 /* Dedication.rtf in Resources */, 51E4995E24A875F300B667CB /* newsfoot.js in Resources */, 517B2EE424B3E8FE001AC46C /* blank.html in Resources */, + 51DEE81526FB9233006DAA56 /* Appanoose.nnwtheme in Resources */, 5177475C24B39AD500EB0F74 /* Credits.rtf in Resources */, 51D0214926ED617100FF2E0F /* core.css in Resources */, 51E4995D24A875F300B667CB /* main.js in Resources */, @@ -4440,6 +4448,7 @@ 51E4996424A875F400B667CB /* stylesheet.css in Resources */, 5137C2E826F3F52D009EFEDB /* Sepia.nnwtheme in Resources */, 51E4997524A8784400B667CB /* DefaultFeeds.opml in Resources */, + 51DEE81626FB9233006DAA56 /* Appanoose.nnwtheme in Resources */, 51C0516324A77DF800194D5E /* Assets.xcassets in Resources */, 51E4996524A875F400B667CB /* template.html in Resources */, 517B2EE924B3E8FE001AC46C /* main_multiplatform.js in Resources */, @@ -4514,6 +4523,7 @@ 65ED406C235DEF6C0081F399 /* Credits.rtf in Resources */, 65ED406D235DEF6C0081F399 /* Inspector.storyboard in Resources */, 65ED406E235DEF6C0081F399 /* AddWebFeedSheet.xib in Resources */, + 51DEE81326FB9233006DAA56 /* Appanoose.nnwtheme in Resources */, B27EEBFA244D15F3000932E6 /* stylesheet.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -4565,6 +4575,7 @@ 51CE1C0923621EDA005548FC /* RefreshProgressView.xib in Resources */, 84C9FC9D2262A1A900D921D6 /* Assets.xcassets in Resources */, 514219582353C28900E07E2C /* main_ios.js in Resources */, + 51DEE81426FB9233006DAA56 /* Appanoose.nnwtheme in Resources */, 51E36E8C239D6765006F47A5 /* AddFeedSelectFolderTableViewCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -4612,6 +4623,7 @@ 5103A9982421643300410853 /* blank.html in Resources */, 515A516E243E7F950089E588 /* ExtensionPointDetail.xib in Resources */, 84BAE64921CEDAF20046DB56 /* CrashReporterWindow.xib in Resources */, + 51DEE81226FB9233006DAA56 /* Appanoose.nnwtheme in Resources */, 84C9FC8E22629E8F00D921D6 /* Credits.rtf in Resources */, 84BBB12D20142A4700F054F5 /* Inspector.storyboard in Resources */, 848363022262A3BD00DA1D35 /* AddWebFeedSheet.xib in Resources */, diff --git a/Shared/Resources/Appanoose.nnwtheme/Info.plist b/Shared/Resources/Appanoose.nnwtheme/Info.plist new file mode 100644 index 000000000..baf355209 --- /dev/null +++ b/Shared/Resources/Appanoose.nnwtheme/Info.plist @@ -0,0 +1,16 @@ + + + + + Name + Starter + ThemeIdentifier + com.netnewswire.themes.starter + CreatorHomePage + http://netnewswire.com/ + CreatorName + Ranchero Software + Version + 1 + + diff --git a/Shared/Resources/Appanoose.nnwtheme/stylesheet.css b/Shared/Resources/Appanoose.nnwtheme/stylesheet.css new file mode 100644 index 000000000..9356c552e --- /dev/null +++ b/Shared/Resources/Appanoose.nnwtheme/stylesheet.css @@ -0,0 +1,538 @@ +/* Shared iOS and macOS CSS rules. Platform specific rules are at the bottom of this file. */ + +body { + word-wrap: break-word; + max-width: 44em; +} + +article { + margin-top: 12px; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +.footerTable { + width: 100%; +} + +.systemMessage { + position: absolute; + top: 45%; + left: 50%; + transform: translateX(-55%) translateY(-50%); + -webkit-user-select: none; + cursor: default; +} + +:root { + --footer-table-border-color: rgba(0, 0, 0, 0.1); + --footer-color: rgba(0, 0, 0, 0.3); + --body-code-color: #666; + --system-message-color: #cbcbcb; + --attribution-color: dimgray; + --article-title-color: #333; + --article-date-color: rgba(0, 0, 0, 0.3); + --table-cell-border-color: lightgray; +} + +@media(prefers-color-scheme: dark) { + :root { + --footer-color: rgba(94, 158, 244, 1); + --body-code-color: #b2b2b2; + --system-message-color: #5f5f5f; + --attribution-color: #b2b2b2; + --article-title-color: #e0e0e0; + --article-date-color: rgba(255, 255, 255, 0.5); + --table-cell-border-color: dimgray; + } +} + +.nnwDate { + white-space: nowrap; +} + +.nnwTime { + white-space: nowrap; + font-size: 66%; +} + +.nnwDateTime { + line-height: 1.2; + color: var(--attribution-color); +} + +body .header { + padding: 6px; + border: 1px solid var(--header-footer-border-color); + border-radius: 4px; + display: flex; +} + +body .footer { + margin-top: 22px; + padding: 6px; + border: 1px solid var(--header-footer-border-color); + border-radius: 4px; + color: var(--body-code-color); +} + +body .footer a:link, .footer a:visited { + color: var(--body-code-color); +} + +body code, body pre { + color: var(--body-code-color); +} + +body > .systemMessage { + color: var(--system-message-color); +} + +.feedIcon { + border-radius: 4px; +} + +.attribution { + line-height: 1.2; + margin-left: 4px; + margin-right: 4px; + display: inline-block; + vertical-align: middle; + text-align: left; + flex: 20 1 auto; + color: var(--attribution-color); +} + +.feedLink { + color: var(--attribution-color); +} + +.byline { + color: var(--attribution-color); + font-size: 66%; +} + +body .byline a:link, .byline a:visited { + color: var(--attribution-color); +} + +.rightAlign { + text-align: end; +} + +.leftAlign { + text-align: start; +} + +.articleTitle { + margin-top: 16px; + font-size: 1.2em; + font-weight: bold; + color: var(--article-title-color); + text-align: center; +} + +.articleTitle a:link, .articleTitle a:visited { + color: var(--article-title-color); +} + +.articleDateline { + color: var(--article-date-color); +} + +.articleDateline a:link, .articleDateline a:visited { + color: var(--article-date-color); +} + +.articleDatelineTitle a:link, .articleDatelineTitle a:visited { + color: var(--article-title-color); +} + +.externalLink { + font-style: italic; + width: 100%; +} + +.singleLine { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +body .externalLink a:link, .externalLink a:visited { + color: var(--article-title-color); +} + +.articleBody { + margin-top: 10px; + line-height: 1.6em; +} + +h1 { + line-height: 1.15em; + font-weight: bold; + padding-bottom: 0; + margin-bottom: 5px; +} + +h3 { + font-weight: bold; + margin-bottom: 3px; +} + +pre { + max-width: 100%; + margin: 0; + overflow: auto; + overflow-y: hidden; + word-wrap: normal; + word-break: normal; +} + +pre { + line-height: 1.4286em; +} + +code, pre { + font-family: "SF Mono", Menlo, "Courier New", Courier, monospace; + font-size: 1em; + -webkit-hyphens: none; +} + +pre code { + letter-spacing: -.027em; + font-size: 0.9375em; +} + +.nnw-overflow { + overflow-x: auto; +} + +.avatar { + vertical-align: middle; + border-radius: 4px; + height: 2em; + width: 2em; + min-width: 2em; +} + +/* + Instead of the last-child bits, border-collapse: collapse + could have been used. However, then the inter-cell borders + overlap the table border, which looks bad. + */ +.nnw-overflow table { + margin-bottom: 1px; + border-spacing: 0; + border: 1px solid var(--secondary-accent-color); + font-size: inherit; +} + +.nnw-overflow table table { + margin-bottom: 0; + border: none; +} + +.nnw-overflow td, .nnw-overflow th { + -webkit-hyphens: none; + word-break: normal; + border: 1px solid var(--table-cell-border-color); + border-top: none; + border-left: none; + padding: 5px; +} + +.nnw-overflow tr :matches(td, th):last-child { + border-right: none; +} + +.nnw-overflow :matches(thead, tbody, tfoot):last-child > tr:last-child :matches(td, th) { + border-bottom: none; +} + +.nnw-overflow td pre { + border: none; + padding: 0; +} + +.nnw-overflow table[border="0"] { + border-width: 0; +} + +img, figure, video, div, object { + max-width: 100%; + height: auto !important; + margin: 0 auto; +} + +iframe { + max-width: 100%; + margin: 0 auto; +} + +iframe.nnw-constrained { + max-height: 50vw; +} + +figure { + margin-bottom: 1em; + margin-top: 1em; +} + +figcaption { + font-size: 14px; + line-height: 1.3em; +} + +sup { + vertical-align: top; + position: relative; + bottom: 0.2rem; +} + +sub { + vertical-align: bottom; + position: relative; + top: 0.2rem; +} + +hr { + border: 1.5px solid var(--table-cell-border-color); +} + +.iframeWrap { + position: relative; + display: block; + padding-top: 56.25%; +} + +.iframeWrap iframe { + position: absolute; + top: 0; + left: 0; + height: 100% !important; + width: 100% !important; +} + +blockquote { + margin-inline-start: 0; + margin-inline-end: 0; + padding-inline-start: 15px; + border-inline-start: 3px solid var(--block-quote-border-color); +} + +/* Feed Specific */ + +.feedbin--article-wrap { + border-top: 1px solid var(--footer-table-border-color); +} + +/* Twitter */ + +.twitterAvatar { + vertical-align: middle; + border-radius: 4px; + height: 1.7em; + width: 1.7em; +} + +.twitterUsername { + line-height: 1.2; + margin-left: 4px; + display: inline-block; + vertical-align: middle; +} + +.twitterScreenName { + font-size: 66%; +} + +.twitterTimestamp { + font-size: 66%; +} + +/* Newsfoot theme for light mode (default) */ +.newsfoot-footnote-popover { + background: #ccc; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5), 0 3px 6px rgba(0, 0, 0, 0.25); + color: black; + padding: 1px; +} + +.newsfoot-footnote-popover-arrow { + background: #fafafa; + border: 1px solid #ccc; +} + +.newsfoot-footnote-popover-inner { + background: #fafafa; +} + +body a.footnote, +body a.footnote:visited, +.newsfoot-footnote-popover + a.footnote:hover { + background: #aaa; + color: white; + transition: background-color 200ms ease-out; +} + +a.footnote:hover, +.newsfoot-footnote-popover + a.footnote { + background: #666; + transition: background-color 200ms ease-out; +} + +/* Newsfoot theme for dark mode */ +@media screen and (prefers-color-scheme: dark) { + .newsfoot-footnote-popover { + background: #444; + color: rgb(224, 224, 224); + } + + .newsfoot-footnote-popover-arrow { + background: #242424; + border: 1px solid #444; + } + + .newsfoot-footnote-popover-inner { + background: #242424; + } + + body a.footnote, + body a.footnote:visited, + .newsfoot-footnote-popover + a.footnote:hover { + background: #aaa; + color: white; + transition: background-color 200ms ease-out; + } + + a.footnote:hover, + .newsfoot-footnote-popover + a.footnote { + background: #666; + transition: background-color 200ms ease-out; + } + +} + +/* iOS Specific */ +@supports (-webkit-touch-callout: none) { + + body { + margin-top: 3px; + margin-bottom: 20px; + margin-left: 20px; + margin-right: 20px; + + word-break: break-word; + -webkit-hyphens: auto; + -webkit-text-size-adjust: none; + } + + :root { + color-scheme: light dark; + font: -apple-system-body; + /* The font-size is replaced at runtime by the dynamic type size */ + font-size: [[font-size]]px; + --primary-accent-color: #086AEE; + --secondary-accent-color: #086AEE; + --block-quote-border-color: rgba(8, 106, 238, 0.50); + --header-footer-border-color: rgba(8, 106, 238, 0.75); + --secondary-accent-color: #086AEE; + } + + @media(prefers-color-scheme: dark) { + :root { + --primary-accent-color: #2D80F1; + --secondary-accent-color: #5E9EF4; + --block-quote-border-color: rgba(94, 158, 244, 0.50); + --header-footer-border-color: rgba(94, 158, 244, 0.75); + --footer-table-border-color: rgba(255, 255, 255, 0.2); + } + } + + body a, body a:visited { + color: var(--secondary-accent-color); + } + + .fontSize { + font: -apple-system-body; + font-size: [[font-size]]px; + } + + pre { + border: 1px solid var(--secondary-accent-color); + padding: 5px; + } + + .nnw-overflow table { + border: 1px solid var(--secondary-accent-color); + } + +} + +/* macOS Specific */ +@supports not (-webkit-touch-callout: none) { + + body { + margin-top: 20px; + margin-bottom: 20px; + margin-left: 48px; + margin-right: 48px; + font-family: -apple-system; + } + + .smallText { + font-size: 14px; + } + + .mediumText { + font-size: 16px; + } + + .largeText { + font-size: 18px; + } + + .xlargeText { + font-size: 20px; + } + + .xxlargeText { + font-size: 22px; + } + + :root { + color-scheme: light dark; + --accent-color: rgba(8, 106, 238, 1); + --block-quote-border-color: rgba(8, 106, 238, .50); + --header-footer-border-color: rgba(8, 106, 238, 0.75); + } + + @media(prefers-color-scheme: dark) { + :root { + --accent-color: rgba(94, 158, 244, 1); + --block-quote-border-color: rgba(94, 158, 244, .50); + --header-footer-border-color: rgba(94, 158, 244, 0.75); + } + } + + body a, body a:visited { + color: var(--accent-color); + } + + pre { + border: 1px solid var(--accent-color); + padding: 10px; + } + + .nnw-overflow table { + border: 1px solid var(--accent-color); + } + +} diff --git a/Shared/Resources/Appanoose.nnwtheme/template.html b/Shared/Resources/Appanoose.nnwtheme/template.html new file mode 100644 index 000000000..acc460be6 --- /dev/null +++ b/Shared/Resources/Appanoose.nnwtheme/template.html @@ -0,0 +1,56 @@ + + +
+
+
+ +
+
+ + +
+ +
+ + + +
+
[[body]]
+
+ + \ No newline at end of file From 6f6705e3e0cbc91586389b9261968532d0b1173f Mon Sep 17 00:00:00 2001 From: Daniel Jalkut Date: Wed, 22 Sep 2021 14:09:26 -0400 Subject: [PATCH 135/169] Fix a typo in the key for the ThemeIdentifier in Sepia.nnwtheme. --- Shared/Resources/Sepia.nnwtheme/Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shared/Resources/Sepia.nnwtheme/Info.plist b/Shared/Resources/Sepia.nnwtheme/Info.plist index 35854c544..6ad2fab65 100644 --- a/Shared/Resources/Sepia.nnwtheme/Info.plist +++ b/Shared/Resources/Sepia.nnwtheme/Info.plist @@ -4,7 +4,7 @@ Name Sepia - ThemeIdentifer + ThemeIdentifier com.netnewswire.themes.sepia CreatorHomePage http://netnewswire.com/ From f73426f397106c6f7838c9365010fc886891a196 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 22 Sep 2021 19:22:07 -0500 Subject: [PATCH 136/169] Added the Promenade theme to the defaults --- NetNewsWire.xcodeproj/project.pbxproj | 14 +- .../Resources/Promenade.nnwtheme/Info.plist | 16 + .../Promenade.nnwtheme/stylesheet.css | 679 ++++++++++++++++++ .../Promenade.nnwtheme/template.html | 60 ++ 4 files changed, 768 insertions(+), 1 deletion(-) create mode 100644 Shared/Resources/Promenade.nnwtheme/Info.plist create mode 100644 Shared/Resources/Promenade.nnwtheme/stylesheet.css create mode 100644 Shared/Resources/Promenade.nnwtheme/template.html diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 392329d4b..67ae723d7 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -634,6 +634,11 @@ 51DEE81426FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; 51DEE81526FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; 51DEE81626FB9233006DAA56 /* Appanoose.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */; }; + 51DEE81826FBFF84006DAA56 /* Promenade.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81726FBFF84006DAA56 /* Promenade.nnwtheme */; }; + 51DEE81926FBFF84006DAA56 /* Promenade.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81726FBFF84006DAA56 /* Promenade.nnwtheme */; }; + 51DEE81A26FBFF84006DAA56 /* Promenade.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81726FBFF84006DAA56 /* Promenade.nnwtheme */; }; + 51DEE81B26FBFF84006DAA56 /* Promenade.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81726FBFF84006DAA56 /* Promenade.nnwtheme */; }; + 51DEE81C26FBFF84006DAA56 /* Promenade.nnwtheme in Resources */ = {isa = PBXBuildFile; fileRef = 51DEE81726FBFF84006DAA56 /* Promenade.nnwtheme */; }; 51E0614525A5A28E00194066 /* Articles in Frameworks */ = {isa = PBXBuildFile; productRef = 51E0614425A5A28E00194066 /* Articles */; }; 51E0614625A5A28E00194066 /* Articles in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 51E0614425A5A28E00194066 /* Articles */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 51E0614825A5A28E00194066 /* ArticlesDatabase in Frameworks */ = {isa = PBXBuildFile; productRef = 51E0614725A5A28E00194066 /* ArticlesDatabase */; }; @@ -1894,6 +1899,7 @@ 51DC37082402F1470095D371 /* MasterFeedDataSourceOperation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterFeedDataSourceOperation.swift; sourceTree = ""; }; 51DC370A2405BC9A0095D371 /* PreloadedWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreloadedWebView.swift; sourceTree = ""; }; 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Appanoose.nnwtheme; sourceTree = ""; }; + 51DEE81726FBFF84006DAA56 /* Promenade.nnwtheme */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Promenade.nnwtheme; sourceTree = ""; }; 51E36E70239D6610006F47A5 /* AddFeedSelectFolderTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddFeedSelectFolderTableViewCell.swift; sourceTree = ""; }; 51E36E8B239D6765006F47A5 /* AddFeedSelectFolderTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AddFeedSelectFolderTableViewCell.xib; sourceTree = ""; }; 51E3EB32229AB02C00645299 /* ErrorHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorHandler.swift; sourceTree = ""; }; @@ -2636,8 +2642,9 @@ 844B5B681FEA20DF00C7C76A /* SidebarKeyboardShortcuts.plist */, 845479871FEB77C000AD8B59 /* TimelineKeyboardShortcuts.plist */, 5127B237222B4849006D641D /* DetailKeyboardShortcuts.plist */, - 5137C2E326F3F52D009EFEDB /* Sepia.nnwtheme */, 51DEE81126FB9233006DAA56 /* Appanoose.nnwtheme */, + 51DEE81726FBFF84006DAA56 /* Promenade.nnwtheme */, + 5137C2E326F3F52D009EFEDB /* Sepia.nnwtheme */, ); path = Resources; sourceTree = ""; @@ -4425,6 +4432,7 @@ 517B2EE224B3E8FE001AC46C /* page.html in Resources */, 51E4995F24A875F300B667CB /* stylesheet.css in Resources */, 517B2EE824B3E8FE001AC46C /* main_multiplatform.js in Resources */, + 51DEE81B26FBFF84006DAA56 /* Promenade.nnwtheme in Resources */, 51E4997324A8784300B667CB /* DefaultFeeds.opml in Resources */, 5137C2E726F3F52D009EFEDB /* Sepia.nnwtheme in Resources */, 51C0516224A77DF800194D5E /* Assets.xcassets in Resources */, @@ -4454,6 +4462,7 @@ 517B2EE924B3E8FE001AC46C /* main_multiplatform.js in Resources */, 51D0214A26ED617100FF2E0F /* core.css in Resources */, 517B2EE524B3E8FE001AC46C /* blank.html in Resources */, + 51DEE81C26FBFF84006DAA56 /* Promenade.nnwtheme in Resources */, 51E4996324A875F400B667CB /* newsfoot.js in Resources */, 51E4996224A875F400B667CB /* main.js in Resources */, ); @@ -4498,6 +4507,7 @@ 65ED405A235DEF6C0081F399 /* main_mac.js in Resources */, 65ED405B235DEF6C0081F399 /* KeyboardShortcuts.html in Resources */, 65ED405C235DEF6C0081F399 /* ImportOPMLSheet.xib in Resources */, + 51DEE81926FBFF84006DAA56 /* Promenade.nnwtheme in Resources */, 65ED405D235DEF6C0081F399 /* SidebarKeyboardShortcuts.plist in Resources */, 514A89A3244FD63F0085E65D /* AddTwitterFeedSheet.xib in Resources */, 51D0214726ED617100FF2E0F /* core.css in Resources */, @@ -4555,6 +4565,7 @@ 516A093723609A3600EAE89B /* SettingsComboTableViewCell.xib in Resources */, 51F85BF32272531500C787DC /* Dedication.rtf in Resources */, 516A09422361248000EAE89B /* Inspector.storyboard in Resources */, + 51DEE81A26FBFF84006DAA56 /* Promenade.nnwtheme in Resources */, 1768140B2564BB8300D98635 /* NetNewsWire_iOSwidgetextension_target.xcconfig in Resources */, 5103A9B424216A4200410853 /* blank.html in Resources */, 51D0214826ED617100FF2E0F /* core.css in Resources */, @@ -4597,6 +4608,7 @@ 65ED40A0235DEFF00081F399 /* container-migration.plist in Resources */, 5144EA362279FC3D00D19003 /* AccountsAddLocal.xib in Resources */, 51D0214626ED617100FF2E0F /* core.css in Resources */, + 51DEE81826FBFF84006DAA56 /* Promenade.nnwtheme in Resources */, 5142194B2353C1CF00E07E2C /* main_mac.js in Resources */, 84C9FC8C22629E8F00D921D6 /* KeyboardShortcuts.html in Resources */, B27EEBF9244D15F3000932E6 /* stylesheet.css in Resources */, diff --git a/Shared/Resources/Promenade.nnwtheme/Info.plist b/Shared/Resources/Promenade.nnwtheme/Info.plist new file mode 100644 index 000000000..24ec5ca47 --- /dev/null +++ b/Shared/Resources/Promenade.nnwtheme/Info.plist @@ -0,0 +1,16 @@ + + + + + Name + Promenade + ThemeIdentifier + com.mynameisstuart.themes.promenade + CreatorHomePage + https://mynameisstuart.com/ + CreatorName + Stuart Breckenridge + Version + 14 + + diff --git a/Shared/Resources/Promenade.nnwtheme/stylesheet.css b/Shared/Resources/Promenade.nnwtheme/stylesheet.css new file mode 100644 index 000000000..c76ec3eb8 --- /dev/null +++ b/Shared/Resources/Promenade.nnwtheme/stylesheet.css @@ -0,0 +1,679 @@ +body { + margin-left: auto; + margin-right: auto; + + word-wrap: break-word; + max-width: 44em; +} + +.feedHeader { + margin: auto; + text-align: center; +} + +.feedHeader img { + margin: auto; + display: block; + padding-top: 1em; + padding-bottom: 1em; +} + +.svg-inline--fa { + height: 1em; + width: 1em; + vertical-align: middle; +} + +a { + text-decoration: none; + font-weight: bold; +} +a:hover { + text-decoration: underline; +} +.feedlink { + font-weight: bold; +} +.headerTable { + width: 100%; + height: 68px; +} + +img { + border-radius: 4px; +} + +pre { + padding: 5px; + border-radius: 4px; +} + +.systemMessage { + position: absolute; + top: 45%; + left: 50%; + transform: translateX(-55%) translateY(-50%); + -webkit-user-select: none; + cursor: default; +} + +:root { + --header-table-border-color: rgba(0, 0, 0, 0.1); + --header-color: rgba(0, 0, 0, 0.3); + --body-code-color: #666; + --system-message-color: #cbcbcb; + --feedlink-color: rgba(255, 0, 0, 0.6); + --article-title-color: #333; + --article-date-color: rgba(0, 0, 0, 0.3); + --table-cell-border-color: lightgray; +} + +@media(prefers-color-scheme: dark) { + :root { + --header-color: rgba(94, 158, 244, 1); + --body-code-color: #b2b2b2; + --system-message-color: #5f5f5f; + --feedlink-color: rgba(94, 158, 244, 1); + --article-title-color: #e0e0e0; + --article-date-color: rgba(255, 255, 255, 0.5); + --table-cell-border-color: dimgray; + } +} + +body .headerTable { + border-bottom: 1px solid var(--header-table-border-color); + color: var(--header-color); +} +body .header { + color: var(--header-color); +} +body .header a:link, .header a:visited { + color: var(--header-color); +} + +body code, body pre { + color: var(--body-code-color); +} + +body > .systemMessage { + color: var(--system-message-color); +} + +.feedlink a:link, .feedlink a:visited { + color: var(--feedlink-color); +} + +.avatar img { + border-radius: 4px; +} + +.feedIcon { + border-radius: 4px; +} +.rightAlign { + text-align: end; +} +.leftAlign { + text-align: start; +} + +.articleTitle a:link, .articleTitle a:visited, .articleTitle h1 { + color: var(--article-title-color); + margin-top: 26px; + padding-bottom: 12px; + text-align: center; + margin: auto; + font-family: Charter, ui-serif; +} + +.articleDateline { + color: rgba(124, 124, 124, 1); + margin-bottom: 5px; + text-align: center; + padding-top: 1em; +} + +.articleDateline a:link, .articleDateline a:visited { + color: rgba(166, 166, 166, 1); + font-weight: normal; + padding-top: 1em; + text-align: center; +} + +.articleDatelineTitle { + color: rgba(124, 124, 124, 1); + margin-bottom: 5px; + font-weight: normal; +} + +.articleDatelineTitle a:link, .articleDatelineTitle a:visited { + color: var(--article-title-color); +} + +.externalLink { + margin-bottom: 5px; + font-style: italic; + width: 100%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + text-align: center; +} + + + +.articleBody { + margin-top: 20px; + line-height: 1.6em; +} + +h1 { + line-height: 1.15em; + font-weight: bold; + padding-bottom: 0; + margin-bottom: 5px; +} + +pre { + max-width: 100%; + margin: 0; + overflow: auto; + overflow-y: hidden; + word-wrap: normal; + word-break: normal; +} + +pre { + line-height: 1.4286em; +} + +code, pre { + font-family: "SF Mono", Menlo, "Courier New", Courier, monospace; + font-size: 0.95em; + -webkit-hyphens: none; +} + +pre code { + letter-spacing: -.027em; + font-size: 0.9375em; +} + +.nnw-overflow { + overflow-x: auto; +} +/* + Instead of the last-child bits, border-collapse: collapse + could have been used. However, then the inter-cell borders + overlap the table border, which looks bad. + */ +.nnw-overflow table { + margin-bottom: 1px; + border-spacing: 0; + border: 1px solid var(--secondary-accent-color); + font-size: inherit; +} +.nnw-overflow table table { + margin-bottom: 0; + border: none; +} +.nnw-overflow td, .nnw-overflow th { + -webkit-hyphens: none; + word-break: normal; + border: 1px solid var(--table-cell-border-color); + border-top: none; + border-left: none; + padding: 5px; +} + +.nnw-overflow tr :matches(td, th):last-child { + border-right: none; +} + +.nnw-overflow :matches(thead, tbody, tfoot):last-child > tr:last-child :matches(td, th) { + border-bottom: none; +} +.nnw-overflow td pre { + border: none; + padding: 0; +} +.nnw-overflow table[border="0"] { + border-width: 0; +} + +img, figure, video, div, object { + max-width: 100%; + height: auto !important; + margin: 0 auto; +} + +iframe { + max-width: 100%; + margin: 0 auto; +} + +iframe.nnw-constrained { + max-height: 50vw; +} + +figure { + margin-bottom: 1em; + margin-top: 1em; +} + +figcaption { + font-size: 14px; + line-height: 1.3em; +} + +sup { + vertical-align: top; + position: relative; + bottom: 0.2rem; +} + +sub { + vertical-align: bottom; + position: relative; + top: 0.2rem; +} + +hr { + border: none; + background-color: var(--table-cell-border-color); + height: 1px; + margin-top: 1em; +} + +.iframeWrap { + position: relative; + display: block; + padding-top: 56.25%; +} + +.iframeWrap iframe { + position: absolute; + top: 0; + left: 0; + height: 100% !important; + width: 100% !important; +} + +@media (prefers-color-scheme: light) { + blockquote { + background: color(srgb 0.947 0.947 0.947); + border-radius: 4px; + margin: 1.5em 0; + padding: 1rem; + color: color(srgb 0.383 0.383 0.383); + font-size: 0.95rem; + } + + pre { + background: color(srgb 0.947 0.947 0.947); + } + + p code { + background: color(srgb 0.947 0.947 0.947); + padding: 0.2em; + border-radius: 4px; + } +} + +@media (prefers-color-scheme: dark) { + blockquote { + background: rgba(49, 49, 49, 1); + border-radius: 4px; + margin: 1.5em 0; + padding: 1em; + color: rgba(195, 195, 195, 1); + font-size: 0.95rem; + } + + pre { + background: rgba(49, 49, 49, 1); + } + + p code { + background: rgba(49, 49, 49, 1); + padding: 0.2em; + border-radius: 4px; + } +} + +blockquote > blockquote { + padding-left: 1em; + padding-top: 0em; + padding-bottom: 0em; + font-style: italic; +} + + +blockquote > *:first-child { + margin-block-start: 0px; +} + +blockquote > *:last-child { + margin-block-end: 0px; +} + + +/* Feed Specific */ + +.feedbin--article-wrap { + border-top: 1px solid var(--header-table-border-color); +} + +/* Hide the external link at the bottom of Daring Fireball posts */ + +.x-netnewswire-hide { + display: none; +} + +/* see removeWpSmiley; this rule is kept in case a wp-smiley is encountered without alt text */ + +.wp-smiley { + height: 1em; + max-height: 1em; +} + +/* Twitter */ + +.twitterAvatar { + vertical-align: middle; + border-radius: 4px; + height: 1.7em; + width: 1.7em; +} + +.twitterUsername { + line-height: 1.2; + margin-left: 4px; + display: inline-block; + vertical-align: middle; +} + +.twitterScreenName { + font-size: 66%; +} + +.twitterTimestamp { + font-size: 66%; +} + +/*Block ads and junk*/ + +iframe[src*="feedads"], +iframe[src*="doubleclick"], +iframe[src*="plusone.google"] { + display: none !important; +} + +a[href*=".ads."], +a[href*="feedads"], +a[href*="doubleclick"], +a[href*="//ads."], +a[href*="api.tweetmeme"], +a[href*="delicious.com/post?"], +a[href*="digg.com/submit?"], +a[href*="google.com/bookmarks/mark?"], +a[href*="posterous.com/share?"], +a[href*="tumblr.com/share?"], +a[href*="linkedin.com/shareArticle?"], +a[href*="facebook.com/share.php?"], +a[href*="http://twitter.com/home?"], +a[href*="addtoany.com/share_save"] { + display: none !important; +} + +img[src*=".ads."], +img[src*="//ads."], +img[src*="doubleclick"], +img[src*="feedads"], +img[src*="feedburner"], +img[src*="feedblitz"], +img[src*="share-buttons"] { + display: none !important; +} + +/* Newsfoot specific styles. Structural styles come first, theme styles second */ +.newsfoot-footnote-container { + position: relative; + display: inline-block; + z-index: 9999; +} + +.newsfoot-footnote-popover { + position: absolute; + display: block; + padding: 0em 1em; + margin: 1em; + top: 0.75em; + max-width: none; + border-radius: 0.3em; + box-sizing: border-box; +} + +.newsfoot-footnote-popover { + left: calc(-1 * (50vw - 1em)); + right: calc(-1 * (50vw - 1em)); +} +.newsfoot-footnote-popover-arrow { + content: ''; + display: block; + width: 1em; + position: absolute; + top: -0.5em; + left: calc(50% - 0.5em); + height: 1em !important; + transform: rotate(45deg); + z-index:0; +} +.newsfoot-footnote-popover-inner { + border-radius: calc(0.3em - 1px); + padding: 1em; + position: relative; + z-index: 1; +} + +.newsfoot-footnote-popover-inner :first-child { + margin-top: 0; +} +.newsfoot-footnote-popover-inner :last-child { + margin-bottom: 0; +} + +.newsfoot-footnote-popover .reversefootnote, +.newsfoot-footnote-popover .footnoteBackLink, +.newsfoot-footnote-popover .footnote-return, +.newsfoot-footnote-popover a[href*='#fn'] { + display: none; +} + +sup[id^='fn'] { + vertical-align: baseline; +} + +a.footnote { + display: inline-block; + text-decoration: none; + padding: 0.05em 0.75em; + border-radius: 1em; + min-width: 1em; + text-align: center; + font-size: 0.8em; + line-height: 1em; + position:relative; + top: -0.1em; +} + +/* light / default */ +.newsfoot-footnote-popover { + background: #ccc; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5), 0 3px 6px rgba(0, 0, 0, 0.25); + color: black; + padding: 1px; +} +.newsfoot-footnote-popover-arrow { + background: #fafafa; + border: 1px solid #ccc; +} +.newsfoot-footnote-popover-inner { + background: #fafafa; +} +body a.footnote, +body a.footnote:visited, +.newsfoot-footnote-popover + a.footnote:hover { + background: #aaa; + color: white; + transition: background-color 200ms ease-out; +} +a.footnote:hover, +.newsfoot-footnote-popover + a.footnote { + background: #666; + transition: background-color 200ms ease-out; +} + +/* dark */ +@media screen and (prefers-color-scheme: dark) { + .newsfoot-footnote-popover { + background: #444; + color: rgb(224, 224, 224); + } + .newsfoot-footnote-popover-arrow { + background: #242424; + border: 1px solid #444; + } + .newsfoot-footnote-popover-inner { + background: #242424; + } + body a.footnote, + body a.footnote:visited, + .newsfoot-footnote-popover + a.footnote:hover { + background: #aaa; + color: white; + transition: background-color 200ms ease-out; + } + a.footnote:hover, + .newsfoot-footnote-popover + a.footnote { + background: #666; + transition: background-color 200ms ease-out; + } +} + +/* iOS Specific */ +@supports (-webkit-touch-callout: none) { + + body { + margin-top: 3px; + margin-bottom: 20px; + padding-left: 20px; + padding-right: 20px; + } + + :root { + color-scheme: light dark; + font-family: 'Avenir-Book', -apple-system-body; + font-size: [[font-size]]px; + --primary-accent-color: #086AEE; + --secondary-accent-color: #086AEE; + --block-quote-border-color: rgba(8, 106, 238, 0.75); + } + + @media(prefers-color-scheme: dark) { + :root { + --primary-accent-color: #2D80F1; + --secondary-accent-color: #5E9EF4; + --block-quote-border-color: rgba(94, 158, 244, 0.75); + --header-table-border-color: rgba(255, 255, 255, 0.2); + } + } + + body a, body a:visited { + color: var(--secondary-accent-color); + } + body .header { + font: -apple-system-body; + font-size: [[font-size]]px; + } + body .header a:link, body .header a:visited { + color: var(--primary-accent-color); + } + + .avatar img { + border-radius: 4px; + } + + .nnw-overflow table { + border: none; + } + + .activityIndicatorWrap { + position: relative; + } + + .activityIndicator { + z-index: 1; + width: 64px; + height: 64px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + +} + +/* macOS Specific */ +@supports not (-webkit-touch-callout: none) { + + body { + margin-top: 20px; + margin-bottom: 64px; + padding-left: 48px; + padding-right: 48px; + font-family: 'Avenir', -apple-system; + } + + .smallText { + font-size: 14px; + } + + .mediumText { + font-size: 16px; + } + + .largeText { + font-size: 18px; + } + + .xlargeText { + font-size: 20px; + } + + .xxlargeText { + font-size: 22px; + } + + :root { + color-scheme: light dark; + --accent-color: rgba(8, 106, 238, 1); + --block-quote-border-color: rgba(8, 106, 238, .50); + } + + @media(prefers-color-scheme: dark) { + :root { + --accent-color: rgba(94, 158, 244, 1); + --block-quote-border-color: rgba(94, 158, 244, .50); + --header-table-border-color: rgba(255, 255, 255, 0.1); + } + } + + body a, body a:visited { + color: var(--accent-color); + } + + .nnw-overflow table { + //border: 1px solid var(--accent-color); + } + +} diff --git a/Shared/Resources/Promenade.nnwtheme/template.html b/Shared/Resources/Promenade.nnwtheme/template.html new file mode 100644 index 000000000..b7c93560a --- /dev/null +++ b/Shared/Resources/Promenade.nnwtheme/template.html @@ -0,0 +1,60 @@ + + + +
+ +
+

[[title]]

+
+ +
[[byline]]
+
+
+ + + + From e9b84d92194e7dcadeaf574d698bdd0574629319 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 23 Sep 2021 20:12:35 +0800 Subject: [PATCH 137/169] Theme Import/Opening Changes Mac: - Better error messages - The alert displayed contains an additional button to open the theme's folder (when clicked it will not dismiss the alert). --- Mac/AppDelegate.swift | 36 +++++++++++++------ Shared/ArticleStyles/ArticleTheme.swift | 1 - .../ArticleThemeDownloader.swift | 1 - 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index ebf1bd30d..cfb108eed 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -107,6 +107,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, private var softwareUpdater: SPUUpdater! private var crashReporter: PLCrashReporter! #endif + + private var themeImportPath: String? override init() { NSWindow.allowsAutomaticWindowTabbing = false @@ -890,15 +892,11 @@ internal extension AppDelegate { } else { importTheme() } - } } } catch { - NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error" : error]) + NotificationCenter.default.post(name: .didFailToImportThemeWithError, object: nil, userInfo: ["error" : error, "path": filename]) } - - - } func confirmImportSuccess(themeName: String) { @@ -921,16 +919,16 @@ internal extension AppDelegate { let window = mainWindowController?.window else { return } - + themeImportPath = userInfo["path"] as? String var informativeText: String = "" if let decodingError = error as? DecodingError { switch decodingError { case .typeMismatch(let type, _): - informativeText = "Type '\(type)' mismatch." + informativeText = "the type—'\(type)'—is mismatched." case .valueNotFound(let value, _): - informativeText = "Value '\(value)' not found." + informativeText = "the value—'\(value)'—is not found." case .keyNotFound(let codingKey, _): - informativeText = "Key '\(codingKey.stringValue)' not found." + informativeText = "the key—'\(codingKey.stringValue)'—is not found." case .dataCorrupted( _): informativeText = error.localizedDescription default: @@ -944,9 +942,25 @@ internal extension AppDelegate { let alert = NSAlert() alert.alertStyle = .warning alert.messageText = NSLocalizedString("Theme Error", comment: "Theme download error") - alert.informativeText = NSLocalizedString("This theme cannot be imported due to the following error: \(informativeText)", comment: "Theme download error information") + alert.informativeText = NSLocalizedString("This theme cannot be used because \(informativeText)", comment: "Theme download error information") + alert.addButton(withTitle: NSLocalizedString("Open Theme Folder", comment: "Open Theme Folder")) alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) - alert.beginSheetModal(for: window) + + let button = alert.buttons.first + button?.target = self + button?.action = #selector(self.openThemesFolder(_:)) + + alert.runModal() + } + } + + @objc func openThemesFolder(_ sender: Any) { + if themeImportPath == nil { + let url = URL(fileURLWithPath: ArticleThemesManager.shared.folderPath) + NSWorkspace.shared.open(url) + } else { + let url = URL(fileURLWithPath: themeImportPath!) + NSWorkspace.shared.open(url.deletingLastPathComponent()) } } diff --git a/Shared/ArticleStyles/ArticleTheme.swift b/Shared/ArticleStyles/ArticleTheme.swift index dc03e816f..e40bde46f 100644 --- a/Shared/ArticleStyles/ArticleTheme.swift +++ b/Shared/ArticleStyles/ArticleTheme.swift @@ -58,7 +58,6 @@ struct ArticleTheme: Equatable { let data = try Data(contentsOf: URL(fileURLWithPath: infoPath)) self.info = try PropertyListDecoder().decode(ArticleThemePlist.self, from: data) - let corePath = Bundle.main.path(forResource: "core", ofType: "css")! let stylesheetPath = (path as NSString).appendingPathComponent("stylesheet.css") if let stylesheetCSS = Self.stringAtPath(stylesheetPath) { diff --git a/Shared/ArticleStyles/ArticleThemeDownloader.swift b/Shared/ArticleStyles/ArticleThemeDownloader.swift index 0e94437ee..7c3e5534c 100644 --- a/Shared/ArticleStyles/ArticleThemeDownloader.swift +++ b/Shared/ArticleStyles/ArticleThemeDownloader.swift @@ -22,7 +22,6 @@ public class ArticleThemeDownloader { } } - public static let shared = ArticleThemeDownloader() private init() {} From 88674d2fc4f379070714773a0e98c12e8b5f7a40 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 23 Sep 2021 20:16:09 +0800 Subject: [PATCH 138/169] Consistent theme error messages on iOS --- iOS/UIKit Extensions/UIViewController-Extensions.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/iOS/UIKit Extensions/UIViewController-Extensions.swift b/iOS/UIKit Extensions/UIViewController-Extensions.swift index 9d06d7609..4f257e7b5 100644 --- a/iOS/UIKit Extensions/UIViewController-Extensions.swift +++ b/iOS/UIKit Extensions/UIViewController-Extensions.swift @@ -19,13 +19,13 @@ extension UIViewController { let errorTitle = NSLocalizedString("Error", comment: "Error") switch decodingError { case .typeMismatch(let type, _): - let str = "Type '\(type)' mismatch." + let str = "This theme cannot be used because the type—'\(type)'—is mismatched." presentError(title: errorTitle, message: str, dismiss: dismiss) case .valueNotFound(let value, _): - let str = "Value '\(value)' not found." + let str = "This theme cannot be used because the value—'\(value)'—is not found." presentError(title: errorTitle, message: str, dismiss: dismiss) case .keyNotFound(let codingKey, _): - let str = "Key '\(codingKey.stringValue)' not found." + let str = "This theme cannot be used because the key—'\(codingKey.stringValue)'—is not found." presentError(title: errorTitle, message: str, dismiss: dismiss) case .dataCorrupted( _): presentError(title: errorTitle, message: error.localizedDescription, dismiss: dismiss) From bd6095517ba60928638311dc15e321fd3c42d252 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 23 Sep 2021 20:19:41 +0800 Subject: [PATCH 139/169] is missing instead of not found --- Mac/AppDelegate.swift | 4 ++-- iOS/UIKit Extensions/UIViewController-Extensions.swift | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index cfb108eed..e52f1be3b 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -926,9 +926,9 @@ internal extension AppDelegate { case .typeMismatch(let type, _): informativeText = "the type—'\(type)'—is mismatched." case .valueNotFound(let value, _): - informativeText = "the value—'\(value)'—is not found." + informativeText = "the value—'\(value)'—is missing in the Info.plist." case .keyNotFound(let codingKey, _): - informativeText = "the key—'\(codingKey.stringValue)'—is not found." + informativeText = "the key—'\(codingKey.stringValue)'—is missing in the Info.plist." case .dataCorrupted( _): informativeText = error.localizedDescription default: diff --git a/iOS/UIKit Extensions/UIViewController-Extensions.swift b/iOS/UIKit Extensions/UIViewController-Extensions.swift index 4f257e7b5..11e166e24 100644 --- a/iOS/UIKit Extensions/UIViewController-Extensions.swift +++ b/iOS/UIKit Extensions/UIViewController-Extensions.swift @@ -19,13 +19,13 @@ extension UIViewController { let errorTitle = NSLocalizedString("Error", comment: "Error") switch decodingError { case .typeMismatch(let type, _): - let str = "This theme cannot be used because the type—'\(type)'—is mismatched." + let str = "This theme cannot be used because the type—'\(type)'—is mismatched in the Info.plist." presentError(title: errorTitle, message: str, dismiss: dismiss) case .valueNotFound(let value, _): - let str = "This theme cannot be used because the value—'\(value)'—is not found." + let str = "This theme cannot be used because the value—'\(value)'—is missing in the Info.plist." presentError(title: errorTitle, message: str, dismiss: dismiss) case .keyNotFound(let codingKey, _): - let str = "This theme cannot be used because the key—'\(codingKey.stringValue)'—is not found." + let str = "This theme cannot be used because the key—'\(codingKey.stringValue)'—is missing in the Info.plist." presentError(title: errorTitle, message: str, dismiss: dismiss) case .dataCorrupted( _): presentError(title: errorTitle, message: error.localizedDescription, dismiss: dismiss) From 709d163e9c1e517037d50d6c42bb5a514ec6f735 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 23 Sep 2021 21:25:25 +0800 Subject: [PATCH 140/169] addtional notes in Themes.md --- Technotes/Themes.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/Technotes/Themes.md b/Technotes/Themes.md index 741e5e963..387c3cb65 100644 --- a/Technotes/Themes.md +++ b/Technotes/Themes.md @@ -1,7 +1,31 @@ # Themes -## Add Themes Directly to NetNewsWire -Theme developers: on iOS and macOS, themes can be opened directly in NetNewsWire using the below URL scheme: +## `.nnwtheme` Structure + +An `.nnwtheme` comprises of three files: +- `Info.plist` +- `template.html` +- `stylesheet.css` + +### Info.plist +The `Info.plist` requires the following keys/types: + +|Key|Type|Notes| +|---|---|---| +|`ThemeIdentifier`|`String`|Unique identifier for the theme, e.g. using reverse domain name.| +|`Name`|`String`|Theme name| +|`CreatorHomePage`|`String`|| +|`CreatorName`|`String`|| +|`Version`|`Integer`|| + +### template.html +This provides a starting point for editing the structure of the page. Theme variables are documented in the header. + +### stylesheet.css +This provides a starting point for editing the style of the page. + +## Add Themes Directly to NetNewsWire with URL Scheme +On iOS and macOS, themes can be opened directly in NetNewsWire using the below URL scheme: `netnewswire://theme/add?url={url}` From 71b0a8d476a6cedae5a2b68022f014524fe22b32 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 23 Sep 2021 10:00:53 -0500 Subject: [PATCH 141/169] Rename the InstalledStyleSheets file to InstalledThemes --- .../ArticleStyles/ArticleThemesManager.swift | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Shared/ArticleStyles/ArticleThemesManager.swift b/Shared/ArticleStyles/ArticleThemesManager.swift index 6e2b6078c..e2205240a 100644 --- a/Shared/ArticleStyles/ArticleThemesManager.swift +++ b/Shared/ArticleStyles/ArticleThemesManager.swift @@ -62,10 +62,10 @@ final class ArticleThemesManager: NSObject, NSFilePresenter { } let themeFilenames = Bundle.main.paths(forResourcesOfType: ArticleTheme.nnwThemeSuffix, inDirectory: nil) - let installedStyleSheets = readInstalledStyleSheets() ?? [String: Date]() + let installedThemes = readInstalledThemes() ?? [String: Date]() for themeFilename in themeFilenames { let themeName = ArticleTheme.themeNameForPath(themeFilename) - if !installedStyleSheets.keys.contains(themeName) { + if !installedThemes.keys.contains(themeName) { try? importTheme(filename: themeFilename) } } @@ -100,9 +100,9 @@ final class ArticleThemesManager: NSObject, NSFilePresenter { try FileManager.default.copyItem(atPath: filename, toPath: toFilename) let themeName = ArticleTheme.themeNameForPath(filename) - var installedStyleSheets = readInstalledStyleSheets() ?? [String: Date]() - installedStyleSheets[themeName] = Date() - writeInstalledStyleSheets(installedStyleSheets) + var installedThemes = readInstalledThemes() ?? [String: Date]() + installedThemes[themeName] = Date() + writeInstalledThemes(installedThemes) } func deleteTheme(themeName: String) { @@ -178,13 +178,13 @@ private extension ArticleThemesManager { return nil } - func readInstalledStyleSheets() -> [String: Date]? { - let filePath = (folderPath as NSString).appendingPathComponent("InstalledStyleSheets.plist") + func readInstalledThemes() -> [String: Date]? { + let filePath = (folderPath as NSString).appendingPathComponent("InstalledThemes.plist") return NSDictionary(contentsOfFile: filePath) as? [String: Date] } - func writeInstalledStyleSheets(_ dict: [String: Date]) { - let filePath = (folderPath as NSString).appendingPathComponent("InstalledStyleSheets.plist") + func writeInstalledThemes(_ dict: [String: Date]) { + let filePath = (folderPath as NSString).appendingPathComponent("InstalledThemes.plist") (dict as NSDictionary).write(toFile: filePath, atomically: true) } From 812eed67c34b5ee6bdb00ed20b0b8b00d334e632 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 23 Sep 2021 10:02:34 -0500 Subject: [PATCH 142/169] Rename button to "Open Themes Folder" --- Mac/Base.lproj/Preferences.storyboard | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard index 94bba47aa..bbe72eefa 100644 --- a/Mac/Base.lproj/Preferences.storyboard +++ b/Mac/Base.lproj/Preferences.storyboard @@ -1,8 +1,8 @@ - + - + @@ -91,8 +91,8 @@