From c05ef2344f0cda125d58c6a17e424205c7d6a0a4 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 25 Nov 2023 11:44:34 -0800 Subject: [PATCH] Remove unused code and references to Twitter and Reddit. --- Account/Sources/Account/AccountManager.swift | 48 --- .../Feedly/FeedlyTestSecrets.swift | 1 - Mac/AppDefaults.swift | 20 - Mac/AppDelegate.swift | 61 --- NetNewsWire.xcodeproj/project.pbxproj | 54 +-- Technotes/HowToSupportNetNewsWire.markdown | 2 +- iOS/Add/AddFeedViewController.swift | 8 - iOS/Add/Reddit/RedditAdd.storyboard | 392 ------------------ ...RedditEnterDetailTableViewController.swift | 64 --- ...dditSelectAccountTableViewController.swift | 42 -- .../RedditSelectSortTableViewController.swift | 46 -- .../RedditSelectTypeTableViewController.swift | 49 --- iOS/Add/Twitter/TwitterAdd.storyboard | 247 ----------- ...witterEnterDetailTableViewController.swift | 82 ---- ...tterSelectAccountTableViewController.swift | 45 -- ...TwitterSelectTypeTableViewController.swift | 81 ---- iOS/AppAssets.swift | 24 -- iOS/MasterFeed/MasterFeedViewController.swift | 40 +- .../contextMenuReddit.imageset/Contents.json | 12 - .../redditContextMenu.pdf | Bin 5484 -> 0 bytes .../contextMenuTwitter.imageset/Contents.json | 12 - .../twitterContextMenu.pdf | Bin 4835 -> 0 bytes .../Contents.json | 15 - .../reddit_logo.pdf | Bin 4297 -> 0 bytes .../Contents.json | 15 - .../twitter.pdf | Bin 4237 -> 0 bytes .../redditWhite.imageset/Contents.json | 12 - .../redditWhite.imageset/redditWhite.pdf | Bin 6351 -> 0 bytes .../twitterWhite.imageset/Contents.json | 12 - .../twitterWhite.imageset/twitter_white.png | Bin 7094 -> 0 bytes iOS/SceneCoordinator.swift | 14 - .../UIStoryboard-Extensions.swift | 8 - 32 files changed, 3 insertions(+), 1403 deletions(-) delete mode 100644 iOS/Add/Reddit/RedditAdd.storyboard delete mode 100644 iOS/Add/Reddit/RedditEnterDetailTableViewController.swift delete mode 100644 iOS/Add/Reddit/RedditSelectAccountTableViewController.swift delete mode 100644 iOS/Add/Reddit/RedditSelectSortTableViewController.swift delete mode 100644 iOS/Add/Reddit/RedditSelectTypeTableViewController.swift delete mode 100644 iOS/Add/Twitter/TwitterAdd.storyboard delete mode 100644 iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift delete mode 100644 iOS/Add/Twitter/TwitterSelectAccountTableViewController.swift delete mode 100644 iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift delete mode 100644 iOS/Resources/Assets.xcassets/contextMenuReddit.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/contextMenuReddit.imageset/redditContextMenu.pdf delete mode 100644 iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/twitterContextMenu.pdf delete mode 100644 iOS/Resources/Assets.xcassets/extensionPointReddit.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/extensionPointReddit.imageset/reddit_logo.pdf delete mode 100644 iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/extensionPointTwitter.imageset/twitter.pdf delete mode 100644 iOS/Resources/Assets.xcassets/redditWhite.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/redditWhite.imageset/redditWhite.pdf delete mode 100644 iOS/Resources/Assets.xcassets/twitterWhite.imageset/Contents.json delete mode 100644 iOS/Resources/Assets.xcassets/twitterWhite.imageset/twitter_white.png diff --git a/Account/Sources/Account/AccountManager.swift b/Account/Sources/Account/AccountManager.swift index 64a9f0e00..351a3479e 100644 --- a/Account/Sources/Account/AccountManager.swift +++ b/Account/Sources/Account/AccountManager.swift @@ -351,54 +351,6 @@ public final class AccountManager: UnreadCountProvider { return false } - public func anyLocalOriCloudAccountHasAtLeastOneTwitterFeed() -> Bool { - // We removed our Twitter code, and the ability to read feeds from Twitter, - // when Twitter announced the end of the free tier for the Twitter API. - // We are cheering on Twitter’s increasing irrelevancy. - - for account in accounts { - if account.type == .cloudKit || account.type == .onMyMac { - for webfeed in account.flattenedWebFeeds() { - if let components = URLComponents(string: webfeed.url), let host = components.host { - if host == "twitter.com" { // Allow, for instance, blog.twitter.com, which might have an actual RSS feed - return true - } - } - } - } - } - - return false - } - - public func anyLocalOriCloudAccountHasAtLeastOneRedditAPIFeed() -> Bool { - // We removed our Reddit code, and the ability to read feeds from Reddit, - // when Reddit announced the end of the free tier for the Reddit API. - // We are cheering on Reddit’s increasing irrelevancy. - - for account in accounts { - if account.type == .cloudKit || account.type == .onMyMac { - for webfeed in account.flattenedWebFeeds() { - if feedRequiresRedditAPI(webfeed) { - return true - } - } - } - } - - return false - } - - /// Return true if a feed is for reddit.com and the path doesn’t end with .rss. - /// - /// More info: [Pathogen-David's Guide to RSS and Reddit!](https://www.reddit.com/r/pathogendavid/comments/tv8m9/pathogendavids_guide_to_rss_and_reddit/) - private func feedRequiresRedditAPI(_ feed: WebFeed) -> Bool { - if let components = URLComponents(string: feed.url), let host = components.host { - return host.hasSuffix("reddit.com") && !components.path.hasSuffix(".rss") - } - return false - } - // MARK: - Fetching Articles // These fetch articles from active accounts and return a merged Set
. diff --git a/Account/Tests/AccountTests/Feedly/FeedlyTestSecrets.swift b/Account/Tests/AccountTests/Feedly/FeedlyTestSecrets.swift index d5f36d5a5..f55e71043 100644 --- a/Account/Tests/AccountTests/Feedly/FeedlyTestSecrets.swift +++ b/Account/Tests/AccountTests/Feedly/FeedlyTestSecrets.swift @@ -14,7 +14,6 @@ struct FeedlyTestSecrets: SecretsProvider { var mercuryClientSecret = "" var feedlyClientId = "" var feedlyClientSecret = "" - var redditConsumerKey = "" var inoreaderAppId = "" var inoreaderAppKey = "" } diff --git a/Mac/AppDefaults.swift b/Mac/AppDefaults.swift index 0b071f0b2..de6fcba22 100644 --- a/Mac/AppDefaults.swift +++ b/Mac/AppDefaults.swift @@ -41,8 +41,6 @@ final class AppDefaults { static let exportOPMLAccountID = "exportOPMLAccountID" static let defaultBrowserID = "defaultBrowserID" static let currentThemeName = "currentThemeName" - static let twitterDeprecationAlertShown = "twitterDeprecationAlertShown" - static let redditDeprecationAlertShown = "redditDeprecationAlertShown" // Hidden prefs static let showDebugMenu = "ShowDebugMenu" @@ -300,24 +298,6 @@ final class AppDefaults { UserDefaults.standard.set(newValue.rawValue, forKey: Key.refreshInterval) } } - - var twitterDeprecationAlertShown: Bool { - get { - return AppDefaults.bool(for: Key.twitterDeprecationAlertShown) - } - set { - AppDefaults.setBool(for: Key.twitterDeprecationAlertShown, newValue) - } - } - - var redditDeprecationAlertShown: Bool { - get { - return AppDefaults.bool(for: Key.redditDeprecationAlertShown) - } - set { - AppDefaults.setBool(for: Key.redditDeprecationAlertShown, newValue) - } - } func registerDefaults() { #if DEBUG diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index 633a713d7..7feee8182 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -131,13 +131,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations, NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(didWakeNotification(_:)), name: NSWorkspace.didWakeNotification, object: nil) appDelegate = self - - if shouldShowTwitterDeprecationAlert() { - showTwitterDeprecationAlert() - } - else if shouldShowRedditDeprecationAlert() { - showRedditDeprecationAlert() - } } // MARK: - API @@ -944,60 +937,6 @@ internal extension AppDelegate { } } - private func shouldShowTwitterDeprecationAlert() -> Bool { - if AppDefaults.shared.twitterDeprecationAlertShown { return false } - - let expiryDate = Date(timeIntervalSince1970: 1691539200) // August 9th 2023, 00:00 UTC - let currentDate = Date() - if currentDate > expiryDate { - return false // If after August 9th, don't show - } - - return AccountManager.shared.anyLocalOriCloudAccountHasAtLeastOneTwitterFeed() - } - - private func showTwitterDeprecationAlert() { - assert(shouldShowTwitterDeprecationAlert()) - - AppDefaults.shared.twitterDeprecationAlertShown = true - DispatchQueue.main.async { - let alert = NSAlert() - alert.alertStyle = .warning - alert.messageText = NSLocalizedString("Twitter Integration Removed", comment: "Twitter Integration Removed") - alert.informativeText = NSLocalizedString("Twitter has ended free access to the parts of the Twitter API that we need.\n\nSince Twitter does not provide RSS feeds, we’ve had to use the Twitter API. Without free access to that API, we can’t read feeds from Twitter.\n\nWe’ve left your Twitter feeds intact. If you have any starred items from those feeds, they will remain as long as you don’t delete those feeds.\n\nYou can still read whatever you have already downloaded. However, those feeds will no longer update.", comment: "Twitter deprecation informative text.") - alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) - alert.buttons[0].keyEquivalent = "\r" - alert.runModal() - } - } - - private func shouldShowRedditDeprecationAlert() -> Bool { - if AppDefaults.shared.redditDeprecationAlertShown { return false } - - let expiryDate = Date(timeIntervalSince1970: 1701331200) // Thu Nov 30 2023 00:00:00 GMT-0800 (Pacific Standard Time) - let currentDate = Date() - if currentDate > expiryDate { - return false - } - - return AccountManager.shared.anyLocalOriCloudAccountHasAtLeastOneRedditAPIFeed() - } - - private func showRedditDeprecationAlert() { - assert(shouldShowRedditDeprecationAlert()) - AppDefaults.shared.redditDeprecationAlertShown = true - - DispatchQueue.main.async { - let alert = NSAlert() - alert.alertStyle = .warning - alert.messageText = NSLocalizedString("Reddit API Integration Removed", comment: "Reddit API Integration Removed") - alert.informativeText = NSLocalizedString("Reddit has ended free access to their API.\n\nThough Reddit does provide RSS feeds, we used the Reddit API to get more and better data. But, without free access to that API, we have had to stop using it.\n\nWe’ve left your Reddit feeds intact. If you have any starred items from those feeds, they will remain as long as you don’t delete those feeds.\n\nYou can still read whatever you have already downloaded.\n\nAlso, importantly — Reddit still provides RSS feeds, and you can follow Reddit activity through RSS.", comment: "Reddit deprecation message") - alert.addButton(withTitle: NSLocalizedString("OK", comment: "OK")) - alert.buttons[0].keyEquivalent = "\r" - alert.runModal() - } - } - @objc func openThemesFolder(_ sender: Any) { if themeImportPath == nil { let url = URL(fileURLWithPath: ArticleThemesManager.shared.folderPath) diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 7b1109b52..411d900da 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -121,15 +121,6 @@ 511D43EF231FBDE900FB1562 /* LaunchScreenPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 511D43ED231FBDE800FB1562 /* LaunchScreenPad.storyboard */; }; 511D4419231FC02D00FB1562 /* KeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 511D4410231FC02D00FB1562 /* KeyboardManager.swift */; }; 51236339236915B100951F16 /* RoundedProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 512363372369155100951F16 /* RoundedProgressView.swift */; }; - 512392BE24E33A3C00F11704 /* RedditSelectAccountTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE603246AF37B00731738 /* RedditSelectAccountTableViewController.swift */; }; - 512392BF24E33A3C00F11704 /* RedditSelectSortTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE607246AFC9900731738 /* RedditSelectSortTableViewController.swift */; }; - 512392C024E33A3C00F11704 /* RedditAdd.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 516AE5FF246AF34100731738 /* RedditAdd.storyboard */; }; - 512392C124E33A3C00F11704 /* RedditSelectTypeTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE601246AF36100731738 /* RedditSelectTypeTableViewController.swift */; }; - 512392C224E33A3C00F11704 /* RedditEnterDetailTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516AE605246AF3A900731738 /* RedditEnterDetailTableViewController.swift */; }; - 512392C324E3451400F11704 /* TwitterAdd.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 510289CF2451BA3A00426DDF /* TwitterAdd.storyboard */; }; - 512392C424E3451400F11704 /* TwitterSelectTypeTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */; }; - 512392C524E3451400F11704 /* TwitterEnterDetailTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */; }; - 512392C624E3451400F11704 /* TwitterSelectAccountTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */; }; 5126EE97226CB48A00C22AFC /* SceneCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5126EE96226CB48A00C22AFC /* SceneCoordinator.swift */; }; 5127B238222B4849006D641D /* DetailKeyboardDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5127B236222B4849006D641D /* DetailKeyboardDelegate.swift */; }; 5127B23A222B4849006D641D /* DetailKeyboardShortcuts.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5127B237222B4849006D641D /* DetailKeyboardShortcuts.plist */; }; @@ -1126,9 +1117,6 @@ 3B826DCA2385C84800FC1ADB /* AccountsFeedWranglerWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsFeedWranglerWindowController.swift; sourceTree = ""; }; 49F40DEF2335B71000552BF4 /* newsfoot.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = newsfoot.js; sourceTree = ""; }; 510289CC24519A1D00426DDF /* SelectComboTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectComboTableViewCell.swift; sourceTree = ""; }; - 510289CF2451BA3A00426DDF /* TwitterAdd.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = TwitterAdd.storyboard; sourceTree = ""; }; - 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterSelectTypeTableViewController.swift; sourceTree = ""; }; - 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterSelectAccountTableViewController.swift; sourceTree = ""; }; 5103A9972421643300410853 /* blank.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = blank.html; sourceTree = ""; }; 5103A9B324216A4200410853 /* blank.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = blank.html; sourceTree = ""; }; 5103A9DA242258C600410853 /* AccountsAddCloudKit.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsAddCloudKit.xib; sourceTree = ""; }; @@ -1206,11 +1194,6 @@ 516A093A2360A4A000EAE89B /* SettingsTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsTableViewCell.xib; sourceTree = ""; }; 516A093F2361240900EAE89B /* Account.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Account.storyboard; sourceTree = ""; }; 516A09412361248000EAE89B /* Inspector.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Inspector.storyboard; sourceTree = ""; }; - 516AE5FF246AF34100731738 /* RedditAdd.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = RedditAdd.storyboard; sourceTree = ""; }; - 516AE601246AF36100731738 /* RedditSelectTypeTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditSelectTypeTableViewController.swift; sourceTree = ""; }; - 516AE603246AF37B00731738 /* RedditSelectAccountTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditSelectAccountTableViewController.swift; sourceTree = ""; }; - 516AE605246AF3A900731738 /* RedditEnterDetailTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditEnterDetailTableViewController.swift; sourceTree = ""; }; - 516AE607246AFC9900731738 /* RedditSelectSortTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RedditSelectSortTableViewController.swift; sourceTree = ""; }; 516AE9B22371C372007DEEAA /* MasterFeedTableViewSectionHeaderLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterFeedTableViewSectionHeaderLayout.swift; sourceTree = ""; }; 516AE9DE2372269A007DEEAA /* IconImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconImage.swift; sourceTree = ""; }; 51707438232AA97100A461A3 /* ShareFolderPickerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareFolderPickerController.swift; sourceTree = ""; }; @@ -1262,7 +1245,6 @@ 51BB7C262335A8E5008E8144 /* ArticleActivityItemSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleActivityItemSource.swift; sourceTree = ""; }; 51BB7C302335ACDE008E8144 /* page.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = page.html; sourceTree = ""; }; 51BC4ADD247277DF000A6ED8 /* URL-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URL-Extensions.swift"; sourceTree = ""; }; - 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwitterEnterDetailTableViewController.swift; sourceTree = ""; }; 51C03080257D815A00609262 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Mac/Base.lproj/UnifiedWindow.storyboard; sourceTree = SOURCE_ROOT; }; 51C266E9238C334800F53014 /* ContextMenuPreviewViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextMenuPreviewViewController.swift; sourceTree = ""; }; 51C4524E226506F400C03939 /* UIStoryboard-Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIStoryboard-Extensions.swift"; sourceTree = ""; }; @@ -1760,17 +1742,6 @@ path = 1Password; sourceTree = ""; }; - 510289CE2451BA1E00426DDF /* Twitter */ = { - isa = PBXGroup; - children = ( - 510289CF2451BA3A00426DDF /* TwitterAdd.storyboard */, - 510289D12451BC1F00426DDF /* TwitterSelectTypeTableViewController.swift */, - 510289D52451DDD100426DDF /* TwitterSelectAccountTableViewController.swift */, - 51BEB22C2451E8340066DEDD /* TwitterEnterDetailTableViewController.swift */, - ); - path = Twitter; - sourceTree = ""; - }; 510C415D24E5CDE3008226FD /* ShareExtension */ = { isa = PBXGroup; children = ( @@ -1896,18 +1867,6 @@ path = Account; sourceTree = ""; }; - 516AE5DD246AF2DD00731738 /* Reddit */ = { - isa = PBXGroup; - children = ( - 516AE5FF246AF34100731738 /* RedditAdd.storyboard */, - 516AE601246AF36100731738 /* RedditSelectTypeTableViewController.swift */, - 516AE603246AF37B00731738 /* RedditSelectAccountTableViewController.swift */, - 516AE605246AF3A900731738 /* RedditEnterDetailTableViewController.swift */, - 516AE607246AFC9900731738 /* RedditSelectSortTableViewController.swift */, - ); - path = Reddit; - sourceTree = ""; - }; 5183CCEA226F70350010922C /* Timer */ = { isa = PBXGroup; children = ( @@ -2092,8 +2051,6 @@ 51C4528B2265095F00C03939 /* AddFolderViewController.swift */, 510289CC24519A1D00426DDF /* SelectComboTableViewCell.swift */, 51E36E8B239D6765006F47A5 /* AddFeedSelectFolderTableViewCell.xib */, - 516AE5DD246AF2DD00731738 /* Reddit */, - 510289CE2451BA1E00426DDF /* Twitter */, ); path = Add; sourceTree = ""; @@ -3364,7 +3321,6 @@ 511D43D2231FA62C00FB1562 /* GlobalKeyboardShortcuts.plist in Resources */, 84C9FCA12262A1B300D921D6 /* Main.storyboard in Resources */, 51BB7C312335ACDE008E8144 /* page.html in Resources */, - 512392C324E3451400F11704 /* TwitterAdd.storyboard in Resources */, 516A093723609A3600EAE89B /* SettingsComboTableViewCell.xib in Resources */, 51F85BF32272531500C787DC /* Dedication.rtf in Resources */, 51077C5627A86C9E000C71DB /* Hyperlegible.nnwtheme in Resources */, @@ -3385,7 +3341,6 @@ 511D43CF231FA62200FB1562 /* DetailKeyboardShortcuts.plist in Resources */, 51A1699A235E10D700EB091F /* Settings.storyboard in Resources */, 49F40DF92335B71000552BF4 /* newsfoot.js in Resources */, - 512392C024E33A3C00F11704 /* RedditAdd.storyboard in Resources */, 51F85BEF2272520B00C787DC /* Thanks.rtf in Resources */, 51CE1C0923621EDA005548FC /* RefreshProgressView.xib in Resources */, 84C9FC9D2262A1A900D921D6 /* Assets.xcassets in Resources */, @@ -4034,7 +3989,6 @@ 51C4529E22650A1900C03939 /* ImageDownloader.swift in Sources */, 51A66685238075AE00CB272D /* AddWebFeedDefaultContainer.swift in Sources */, 176813E92564BAE200D98635 /* WidgetDeepLinks.swift in Sources */, - 512392C424E3451400F11704 /* TwitterSelectTypeTableViewController.swift in Sources */, 51B5C87723F22B8200032075 /* ExtensionContainers.swift in Sources */, 51C45292226509C800C03939 /* TodayFeedDelegate.swift in Sources */, 51C452A222650A1900C03939 /* RSHTMLMetadata+Extension.swift in Sources */, @@ -4069,17 +4023,13 @@ C5A6ED6D23C9B0C800AB6BE2 /* UIActivityViewController-Extensions.swift in Sources */, 5108F6D42375EEEF001ABC45 /* TimelinePreviewTableViewController.swift in Sources */, 84CAFCA522BC8C08007694F0 /* FetchRequestQueue.swift in Sources */, - 512392BE24E33A3C00F11704 /* RedditSelectAccountTableViewController.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 */, 512AF9C2236ED52C0066F8BE /* ImageHeaderView.swift in Sources */, - 512392C124E33A3C00F11704 /* RedditSelectTypeTableViewController.swift in Sources */, 51A1699F235E10D700EB091F /* AboutViewController.swift in Sources */, 51C45290226509C100C03939 /* PseudoFeed.swift in Sources */, - 512392C624E3451400F11704 /* TwitterSelectAccountTableViewController.swift in Sources */, 51C452A922650DC600C03939 /* ArticleRenderer.swift in Sources */, 51C45297226509E300C03939 /* DefaultFeedsImporter.swift in Sources */, 512E094D2268B8AB00BDCFDD /* DeleteCommand.swift in Sources */, @@ -4089,7 +4039,6 @@ 51EF0F7E2277A57D0050506E /* MasterTimelineAccessibilityCellLayout.swift in Sources */, 51A1699B235E10D700EB091F /* AccountInspectorViewController.swift in Sources */, 512D554423C804DE0023FFFA /* OpenInSafariActivity.swift in Sources */, - 512392C224E33A3C00F11704 /* RedditEnterDetailTableViewController.swift in Sources */, 51C452762265091600C03939 /* MasterTimelineViewController.swift in Sources */, 5195C1DC2720BD3000888867 /* MasterFeedRowIdentifier.swift in Sources */, 5108F6D823763094001ABC45 /* TickMarkSlider.swift in Sources */, @@ -4114,7 +4063,6 @@ 51C4529B22650A1000C03939 /* FaviconDownloader.swift in Sources */, 84DEE56622C32CA4005FC42C /* SmartFeedDelegate.swift in Sources */, 512E09012268907400BDCFDD /* MasterFeedTableViewSectionHeader.swift in Sources */, - 512392BF24E33A3C00F11704 /* RedditSelectSortTableViewController.swift in Sources */, 516AE9E02372269A007DEEAA /* IconImage.swift in Sources */, 519ED456244828C3007F8E94 /* AddExtensionPointViewController.swift in Sources */, 51C45268226508F600C03939 /* MasterFeedUnreadCountView.swift in Sources */, diff --git a/Technotes/HowToSupportNetNewsWire.markdown b/Technotes/HowToSupportNetNewsWire.markdown index 36fcc9da3..5b7879ed4 100644 --- a/Technotes/HowToSupportNetNewsWire.markdown +++ b/Technotes/HowToSupportNetNewsWire.markdown @@ -14,7 +14,7 @@ Supporting all these things takes *work*. In no particular order … -* Write a blog instead of posting to Twitter or Facebook. (You can always re-post to those places if you want to extend your reach.) [Micro.blog](https://micro.blog/) is one good place to get going, but it’s not the only one. +* Write a blog instead of posting to Threads or Facebook or any other corporate social media. (You can always re-post to those places if you want to extend your reach.) [Micro.blog](https://micro.blog/) is one good place to get going, but it’s not the only one. * Use an RSS reader even if it’s not NetNewsWire. (There are a bunch of good ones!) * Teach other people to use RSS readers. Blog about RSS readers. And about other open web technologies and apps. * Suggest apps for [macopenweb.com](https://macopenweb.com/). diff --git a/iOS/Add/AddFeedViewController.swift b/iOS/Add/AddFeedViewController.swift index f3eb6cad2..f5a38a1ca 100644 --- a/iOS/Add/AddFeedViewController.swift +++ b/iOS/Add/AddFeedViewController.swift @@ -14,8 +14,6 @@ import RSParser enum AddFeedType { case web - case reddit - case twitter } class AddFeedViewController: UITableViewController { @@ -41,12 +39,6 @@ class AddFeedViewController: UITableViewController { super.viewDidLoad() switch addFeedType { - case .reddit: - navigationItem.title = NSLocalizedString("Add Reddit Feed", comment: "Add Reddit Feed") - navigationItem.leftBarButtonItem = nil - case .twitter: - navigationItem.title = NSLocalizedString("Add Twitter Feed", comment: "Add Twitter Feed") - navigationItem.leftBarButtonItem = nil default: break } diff --git a/iOS/Add/Reddit/RedditAdd.storyboard b/iOS/Add/Reddit/RedditAdd.storyboard deleted file mode 100644 index 738c51e87..000000000 --- a/iOS/Add/Reddit/RedditAdd.storyboard +++ /dev/null @@ -1,392 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Add/Reddit/RedditEnterDetailTableViewController.swift b/iOS/Add/Reddit/RedditEnterDetailTableViewController.swift deleted file mode 100644 index be1e75073..000000000 --- a/iOS/Add/Reddit/RedditEnterDetailTableViewController.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// RedditEnterDetailTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 5/12/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import Foundation - -import UIKit -import Account - -class RedditEnterDetailTableViewController: UITableViewController { - - @IBOutlet weak var detailTextField: UITextField! - - var nextBarButtonItem = UIBarButtonItem() - var redditFeedType: RedditFeedType? - - override func viewDidLoad() { - super.viewDidLoad() - - nextBarButtonItem.title = NSLocalizedString("Next", comment: "Next") - nextBarButtonItem.style = .plain - nextBarButtonItem.target = self - nextBarButtonItem.action = #selector(nextScene) - navigationItem.rightBarButtonItem = nextBarButtonItem - - detailTextField.delegate = self - NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: detailTextField) - - updateUI() - } - - @objc func nextScene() { - let selectSort = UIStoryboard.redditAdd.instantiateController(ofType: RedditSelectSortTableViewController.self) - selectSort.redditFeedType = redditFeedType - selectSort.subreddit = detailTextField.text?.collapsingWhitespace - navigationController?.pushViewController(selectSort, animated: true) - } - - @objc func textDidChange(_ note: Notification) { - updateUI() - } - -} - -extension RedditEnterDetailTableViewController: UITextFieldDelegate { - - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - textField.resignFirstResponder() - return true - } - -} - -private extension RedditEnterDetailTableViewController { - - func updateUI() { - nextBarButtonItem.isEnabled = !(detailTextField.text?.isEmpty ?? false) - } - -} diff --git a/iOS/Add/Reddit/RedditSelectAccountTableViewController.swift b/iOS/Add/Reddit/RedditSelectAccountTableViewController.swift deleted file mode 100644 index 98ba818d2..000000000 --- a/iOS/Add/Reddit/RedditSelectAccountTableViewController.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// RedditSelectAccountTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 5/12/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import Foundation - -import UIKit -import Account - -class RedditSelectAccountTableViewController: UITableViewController { - - private var redditFeedProviders = [RedditFeedProvider]() - - var redditFeedType: RedditFeedType? - - override func viewDidLoad() { - super.viewDidLoad() - redditFeedProviders = ExtensionPointManager.shared.activeExtensionPoints.values.compactMap { $0 as? RedditFeedProvider } - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return redditFeedProviders.count - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) - cell.textLabel?.text = redditFeedProviders[indexPath.row].title - return cell - } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - let selectSort = UIStoryboard.redditAdd.instantiateController(ofType: RedditSelectSortTableViewController.self) - selectSort.redditFeedType = redditFeedType - selectSort.username = redditFeedProviders[indexPath.row].username - navigationController?.pushViewController(selectSort, animated: true) - } - -} diff --git a/iOS/Add/Reddit/RedditSelectSortTableViewController.swift b/iOS/Add/Reddit/RedditSelectSortTableViewController.swift deleted file mode 100644 index 6ea6321b4..000000000 --- a/iOS/Add/Reddit/RedditSelectSortTableViewController.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// RedditSelectSortTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 5/12/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class RedditSelectSortTableViewController: UITableViewController { - - var redditFeedType: RedditFeedType? - var username: String? - var subreddit: String? - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - - let sort: RedditSort - switch indexPath.row { - case 0: - sort = .best - case 1: - sort = .hot - case 2: - sort = .new - case 3: - sort = .top - case 4: - sort = .rising - default: - fatalError() - } - - guard let redditFeedType = redditFeedType else { return } - let url = RedditFeedProvider.buildURL(redditFeedType, username: username, subreddit: subreddit, sort: sort)?.absoluteString - - let addViewController = UIStoryboard.add.instantiateViewController(withIdentifier: "AddWebFeedViewController") as! AddFeedViewController - addViewController.addFeedType = .reddit - addViewController.initialFeed = url - navigationController?.pushViewController(addViewController, animated: true) - - } - -} diff --git a/iOS/Add/Reddit/RedditSelectTypeTableViewController.swift b/iOS/Add/Reddit/RedditSelectTypeTableViewController.swift deleted file mode 100644 index 1f8e2a0a7..000000000 --- a/iOS/Add/Reddit/RedditSelectTypeTableViewController.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// RedditSelectTypeTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 5/12/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class RedditSelectTypeTableViewController: UITableViewController { - - @IBAction func cancel(_ sender: Any) { - dismiss(animated: true) - } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - switch indexPath.row { - case 0: - let redditFeedProviders = ExtensionPointManager.shared.activeExtensionPoints.values.compactMap { $0 as? RedditFeedProvider } - if redditFeedProviders.count == 1 { - let selectSort = UIStoryboard.redditAdd.instantiateController(ofType: RedditSelectSortTableViewController.self) - selectSort.redditFeedType = .home - selectSort.username = redditFeedProviders.first!.username - navigationController?.pushViewController(selectSort, animated: true) - } else { - let selectAccount = UIStoryboard.redditAdd.instantiateController(ofType: RedditSelectAccountTableViewController.self) - selectAccount.redditFeedType = .home - navigationController?.pushViewController(selectAccount, animated: true) - } - case 1: - let selectSort = UIStoryboard.redditAdd.instantiateController(ofType: RedditSelectSortTableViewController.self) - selectSort.redditFeedType = .popular - navigationController?.pushViewController(selectSort, animated: true) - case 2: - let selectSort = UIStoryboard.redditAdd.instantiateController(ofType: RedditSelectSortTableViewController.self) - selectSort.redditFeedType = .all - navigationController?.pushViewController(selectSort, animated: true) - case 3: - let enterDetail = UIStoryboard.redditAdd.instantiateController(ofType: RedditEnterDetailTableViewController.self) - enterDetail.redditFeedType = .subreddit - navigationController?.pushViewController(enterDetail, animated: true) - default: - fatalError() - } - } - -} diff --git a/iOS/Add/Twitter/TwitterAdd.storyboard b/iOS/Add/Twitter/TwitterAdd.storyboard deleted file mode 100644 index f6b2db210..000000000 --- a/iOS/Add/Twitter/TwitterAdd.storyboard +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift b/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift deleted file mode 100644 index 91628260d..000000000 --- a/iOS/Add/Twitter/TwitterEnterDetailTableViewController.swift +++ /dev/null @@ -1,82 +0,0 @@ -// -// TwitterEnterDetailTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 4/23/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class TwitterEnterDetailTableViewController: UITableViewController { - - @IBOutlet weak var detailTextField: UITextField! - - var doneBarButtonItem = UIBarButtonItem() - var twitterFeedType: TwitterFeedType? - - override func viewDidLoad() { - super.viewDidLoad() - - doneBarButtonItem.title = NSLocalizedString("Next", comment: "Next") - doneBarButtonItem.style = .plain - doneBarButtonItem.target = self - doneBarButtonItem.action = #selector(done) - navigationItem.rightBarButtonItem = doneBarButtonItem - - if case .screenName = twitterFeedType { - navigationItem.title = NSLocalizedString("Enter Name", comment: "Enter Name") - detailTextField.placeholder = NSLocalizedString("Screen Name", comment: "Screen Name") - } else { - navigationItem.title = NSLocalizedString("Enter Search", comment: "Enter Search") - detailTextField.placeholder = NSLocalizedString("Search Term or #hashtag", comment: "Search Term") - } - - detailTextField.delegate = self - NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: detailTextField) - - updateUI() - } - - @objc func done() { - guard let twitterFeedType = twitterFeedType, var text = detailTextField.text?.collapsingWhitespace else { return } - - let url: String? - if twitterFeedType == .screenName { - if text.starts(with: "@") { - text = String(text[text.index(text.startIndex, offsetBy: 1).. Bool { - textField.resignFirstResponder() - return true - } - -} - -private extension TwitterEnterDetailTableViewController { - - func updateUI() { - doneBarButtonItem.isEnabled = !(detailTextField.text?.isEmpty ?? false) - } - -} diff --git a/iOS/Add/Twitter/TwitterSelectAccountTableViewController.swift b/iOS/Add/Twitter/TwitterSelectAccountTableViewController.swift deleted file mode 100644 index 80e84be10..000000000 --- a/iOS/Add/Twitter/TwitterSelectAccountTableViewController.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// TwitterSelectAccountTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 4/23/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class TwitterSelectAccountTableViewController: UITableViewController { - - private var twitterFeedProviders = [TwitterFeedProvider]() - - var twitterFeedType: TwitterFeedType? - - override func viewDidLoad() { - super.viewDidLoad() - twitterFeedProviders = ExtensionPointManager.shared.activeExtensionPoints.values.compactMap { $0 as? TwitterFeedProvider } - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return twitterFeedProviders.count - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) - cell.textLabel?.text = "@\(twitterFeedProviders[indexPath.row].screenName)" - return cell - } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - guard let twitterFeedType = twitterFeedType else { return } - - let username = twitterFeedProviders[indexPath.row].screenName - let url = TwitterFeedProvider.buildURL(twitterFeedType, username: username, screenName: nil, searchField: nil)?.absoluteString - - let addViewController = UIStoryboard.add.instantiateViewController(withIdentifier: "AddWebFeedViewController") as! AddFeedViewController - addViewController.addFeedType = .twitter - addViewController.initialFeed = url - navigationController?.pushViewController(addViewController, animated: true) - } - -} diff --git a/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift b/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift deleted file mode 100644 index e8bb2688b..000000000 --- a/iOS/Add/Twitter/TwitterSelectTypeTableViewController.swift +++ /dev/null @@ -1,81 +0,0 @@ -// -// TwitterSelectTypeTableViewController.swift -// NetNewsWire-iOS -// -// Created by Maurice Parker on 4/23/20. -// Copyright © 2020 Ranchero Software. All rights reserved. -// - -import UIKit -import Account - -class TwitterSelectTypeTableViewController: UITableViewController { - - private var twitterFeedProviders = [TwitterFeedProvider]() - - override func viewDidLoad() { - super.viewDidLoad() - twitterFeedProviders = ExtensionPointManager.shared.activeExtensionPoints.values.compactMap { $0 as? TwitterFeedProvider } - } - - @IBAction func cancel(_ sender: Any) { - dismiss(animated: true) - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = super.tableView(tableView, cellForRowAt: indexPath) - if indexPath.row < 2 { - if twitterFeedProviders.count > 1 { - cell.accessoryType = .disclosureIndicator - } - } - return cell - } - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - switch indexPath.row { - case 0: - if twitterFeedProviders.count == 1 { - let username = twitterFeedProviders.first!.screenName - let url = TwitterFeedProvider.buildURL(.homeTimeline, username: username, screenName: nil, searchField: nil)?.absoluteString - pushAddFeedController(url) - } else { - let selectAccount = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterSelectAccountTableViewController.self) - selectAccount.twitterFeedType = .homeTimeline - navigationController?.pushViewController(selectAccount, animated: true) - } - case 1: - if twitterFeedProviders.count == 1 { - let username = twitterFeedProviders.first!.screenName - let url = TwitterFeedProvider.buildURL(.mentions, username: username, screenName: nil, searchField: nil)?.absoluteString - pushAddFeedController(url) - } else { - let selectAccount = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterSelectAccountTableViewController.self) - selectAccount.twitterFeedType = .mentions - navigationController?.pushViewController(selectAccount, animated: true) - } - case 2: - let enterDetail = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterEnterDetailTableViewController.self) - enterDetail.twitterFeedType = .screenName - navigationController?.pushViewController(enterDetail, animated: true) - case 3: - let enterDetail = UIStoryboard.twitterAdd.instantiateController(ofType: TwitterEnterDetailTableViewController.self) - enterDetail.twitterFeedType = .search - navigationController?.pushViewController(enterDetail, animated: true) - default: - fatalError() - } - } - -} - -private extension TwitterSelectTypeTableViewController { - - func pushAddFeedController(_ url: String?) { - let addViewController = UIStoryboard.add.instantiateViewController(withIdentifier: "AddWebFeedViewController") as! AddFeedViewController - addViewController.addFeedType = .twitter - addViewController.initialFeed = url - navigationController?.pushViewController(addViewController, animated: true) - } - -} diff --git a/iOS/AppAssets.swift b/iOS/AppAssets.swift index 2a5ed0659..b74aaa043 100644 --- a/iOS/AppAssets.swift +++ b/iOS/AppAssets.swift @@ -101,14 +101,6 @@ struct AppAssets { return UIImage(named: "disclosure")! }() - static var contextMenuReddit: UIImage = { - return UIImage(named: "contextMenuReddit")! - }() - - static var contextMenuTwitter: UIImage = { - return UIImage(named: "contextMenuTwitter")! - }() - static var copyImage: UIImage = { return UIImage(systemName: "doc.on.doc")! }() @@ -121,14 +113,6 @@ struct AppAssets { UIImage(systemName: "square.and.pencil")! }() - static var extensionPointReddit: RSImage = { - return RSImage(named: "extensionPointReddit")! - }() - - static var extensionPointTwitter: UIImage = { - return UIImage(named: "extensionPointTwitter")! - }() - static var faviconTemplateImage: RSImage = { return RSImage(named: "faviconTemplateImage")! }() @@ -201,10 +185,6 @@ struct AppAssets { return UIColor(named: "primaryAccentColor")! } - static var redditOriginal: UIImage = { - return UIImage(named: "redditWhite")!.withRenderingMode(.alwaysOriginal).withTintColor(.secondaryLabel) - }() - static var safariImage: UIImage = { return UIImage(systemName: "safari")! }() @@ -264,10 +244,6 @@ struct AppAssets { return UIImage(systemName: "trash")! }() - static var twitterOriginal: UIImage = { - return UIImage(named: "twitterWhite")!.withRenderingMode(.alwaysOriginal).withTintColor(.secondaryLabel) - }() - static var unreadFeedImage: IconImage { let image = UIImage(systemName: "largecircle.fill.circle")! return IconImage(image, isSymbol: true, isBackgroundSupressed: true, preferredColor: AppAssets.secondaryAccentColor.cgColor) diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 6e2964c2d..23c545780 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -445,16 +445,6 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { self.coordinator.showAddWebFeed() } - let addRedditFeedActionTitle = NSLocalizedString("Add Reddit Feed", comment: "Add Reddit Feed") - let addRedditFeedAction = UIAlertAction(title: addRedditFeedActionTitle, style: .default) { _ in - self.coordinator.showAddRedditFeed() - } - - let addTwitterFeedActionTitle = NSLocalizedString("Add Twitter Feed", comment: "Add Twitter Feed") - let addTwitterFeedAction = UIAlertAction(title: addTwitterFeedActionTitle, style: .default) { _ in - self.coordinator.showAddTwitterFeed() - } - let addWebFolderdActionTitle = NSLocalizedString("Add Folder", comment: "Add Folder") let addWebFolderAction = UIAlertAction(title: addWebFolderdActionTitle, style: .default) { _ in self.coordinator.showAddFolder() @@ -462,15 +452,6 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { alertController.addAction(addWebFeedAction) - if AccountManager.shared.activeAccounts.contains(where: { $0.type == .onMyMac || $0.type == .cloudKit }) { - if ExtensionPointManager.shared.isRedditEnabled { - alertController.addAction(addRedditFeedAction) - } - if ExtensionPointManager.shared.isTwitterEnabled { - alertController.addAction(addTwitterFeedAction) - } - } - alertController.addAction(addWebFolderAction) alertController.addAction(cancelAction) @@ -649,9 +630,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { /* Context Menu Order: 1. Add Web Feed - 2. Add Reddit Feed - 3. Add Twitter Feed - 4. Add Folder + 2. Add Folder */ var menuItems: [UIAction] = [] @@ -662,23 +641,6 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { } menuItems.append(addWebFeedAction) - if AccountManager.shared.activeAccounts.contains(where: { $0.type == .onMyMac || $0.type == .cloudKit }) { - if ExtensionPointManager.shared.isRedditEnabled { - let addRedditFeedActionTitle = NSLocalizedString("Add Reddit Feed", comment: "Add Reddit Feed") - let addRedditFeedAction = UIAction(title: addRedditFeedActionTitle, image: AppAssets.contextMenuReddit.tinted(color: .label)) { _ in - self.coordinator.showAddRedditFeed() - } - menuItems.append(addRedditFeedAction) - } - if ExtensionPointManager.shared.isTwitterEnabled { - let addTwitterFeedActionTitle = NSLocalizedString("Add Twitter Feed", comment: "Add Twitter Feed") - let addTwitterFeedAction = UIAction(title: addTwitterFeedActionTitle, image: AppAssets.contextMenuTwitter.tinted(color: .label)) { _ in - self.coordinator.showAddTwitterFeed() - } - menuItems.append(addTwitterFeedAction) - } - } - let addWebFolderActionTitle = NSLocalizedString("Add Folder", comment: "Add Folder") let addWebFolderAction = UIAction(title: addWebFolderActionTitle, image: AppAssets.folderOutlinePlus) { _ in self.coordinator.showAddFolder() diff --git a/iOS/Resources/Assets.xcassets/contextMenuReddit.imageset/Contents.json b/iOS/Resources/Assets.xcassets/contextMenuReddit.imageset/Contents.json deleted file mode 100644 index 21dcfdf56..000000000 --- a/iOS/Resources/Assets.xcassets/contextMenuReddit.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "redditContextMenu.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/iOS/Resources/Assets.xcassets/contextMenuReddit.imageset/redditContextMenu.pdf b/iOS/Resources/Assets.xcassets/contextMenuReddit.imageset/redditContextMenu.pdf deleted file mode 100644 index aac84d6201cc7b79077bd4b0e8dee2307ca90778..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5484 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 UF54e-Dhw7BBLxB#G!#ky2NPJv#{d8T diff --git a/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/Contents.json b/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/Contents.json deleted file mode 100644 index 1cf455ca4..000000000 --- a/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "twitterContextMenu.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/twitterContextMenu.pdf b/iOS/Resources/Assets.xcassets/contextMenuTwitter.imageset/twitterContextMenu.pdf deleted file mode 100644 index c7d5a5d74873444c0beeaeb63c2f7530a30204c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4835 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 Z!rD7?c8hrV{l7mmV|{bIdN?BS{{R$mYytoP diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 0d9b3a6fb..526eb7703 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -1211,20 +1211,6 @@ class SceneCoordinator: NSObject, UndoableCommandRunner { masterFeedViewController.present(addNavViewController, animated: true) } - func showAddRedditFeed() { - let addNavViewController = UIStoryboard.redditAdd.instantiateInitialViewController() as! UINavigationController - addNavViewController.modalPresentationStyle = .formSheet - addNavViewController.preferredContentSize = AddFeedViewController.preferredContentSizeForFormSheetDisplay - masterFeedViewController.present(addNavViewController, animated: true) - } - - func showAddTwitterFeed() { - let addNavViewController = UIStoryboard.twitterAdd.instantiateInitialViewController() as! UINavigationController - addNavViewController.modalPresentationStyle = .formSheet - addNavViewController.preferredContentSize = AddFeedViewController.preferredContentSizeForFormSheetDisplay - masterFeedViewController.present(addNavViewController, animated: true) - } - func showAddFolder() { let addNavViewController = UIStoryboard.add.instantiateViewController(withIdentifier: "AddFolderViewControllerNav") as! UINavigationController addNavViewController.modalPresentationStyle = .formSheet diff --git a/iOS/UIKit Extensions/UIStoryboard-Extensions.swift b/iOS/UIKit Extensions/UIStoryboard-Extensions.swift index 92caedf99..ef48e061d 100644 --- a/iOS/UIKit Extensions/UIStoryboard-Extensions.swift +++ b/iOS/UIKit Extensions/UIStoryboard-Extensions.swift @@ -20,14 +20,6 @@ extension UIStoryboard { return UIStoryboard(name: "Add", bundle: nil) } - static var redditAdd: UIStoryboard { - return UIStoryboard(name: "RedditAdd", bundle: nil) - } - - static var twitterAdd: UIStoryboard { - return UIStoryboard(name: "TwitterAdd", bundle: nil) - } - static var settings: UIStoryboard { return UIStoryboard(name: "Settings", bundle: nil) }