diff --git a/Account/Sources/Account/AccountManager.swift b/Account/Sources/Account/AccountManager.swift index 24ff0a764..ad588f955 100644 --- a/Account/Sources/Account/AccountManager.swift +++ b/Account/Sources/Account/AccountManager.swift @@ -351,6 +351,26 @@ 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 + } + // MARK: - Fetching Articles // These fetch articles from active accounts and return a merged Set
. diff --git a/Mac/AppDelegate.swift b/Mac/AppDelegate.swift index e337d1a29..f080f72d3 100644 --- a/Mac/AppDelegate.swift +++ b/Mac/AppDelegate.swift @@ -957,28 +957,13 @@ internal extension AppDelegate { private func presentTwitterDeprecationAlertIfRequired() { if AppDefaults.shared.twitterDeprecationAlertShown { return } - let expiryDate = Date(timeIntervalSince1970: 1691539200).timeIntervalSince1970 // August 9th 2023, 00:00 UTC - let currentDate = Date().timeIntervalSince1970 + let expiryDate = Date(timeIntervalSince1970: 1691539200) // August 9th 2023, 00:00 UTC + let currentDate = Date() if currentDate > expiryDate { return // If after August 9th, don't show } - - var twitterIsActive: Bool = false - AccountManager.shared.accounts.forEach({ account in - if account.type == .cloudKit || account.type == .onMyMac { - account.flattenedWebFeeds().forEach({ webfeed in - guard let components = URLComponents(string: webfeed.url), - let host = components.host else { - return - } - if host == "twitter.com" { - twitterIsActive = true - return - } - }) - } - }) - if twitterIsActive { + + if AccountManager.shared.anyLocalOriCloudAccountHasAtLeastOneTwitterFeed() { showTwitterDeprecationAlert() } AppDefaults.shared.twitterDeprecationAlertShown = true