Create and use anyLocalOriCloudAccountHasAtLeastOneTwitterFeed in AccountManager, so both iOS and Mac apps can use it. Also: simplify the Date comparison in presentTwitterDeprecationAlertIfRequired by using Dates instead of TimeInterval.

This commit is contained in:
Brent Simmons 2023-02-05 18:07:30 -08:00
parent 33c4cfcc3a
commit e2aa15f08a
2 changed files with 23 additions and 19 deletions

View File

@ -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 Twitters 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<Article>.

View File

@ -717,28 +717,13 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner {
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
@ -752,7 +737,6 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner {
alert.addAction(UIAlertAction(title: "OK", style: .cancel))
present(alert, animated: true)
}
}
// MARK: UIContextMenuInteractionDelegate