Use ItemIdentifier and itemID instead of FeedIdentifier and feedID. (FeedIdentifier was renamed to ItemIdentifier.)

This commit is contained in:
Brent Simmons
2023-07-04 14:41:02 -07:00
parent 4890a33469
commit a6832dd2a5
16 changed files with 101 additions and 101 deletions

View File

@@ -172,11 +172,11 @@ private extension ActivityManager {
activity.keywords = Set(makeKeywords(title))
activity.isEligibleForSearch = true
let articleFetcherIdentifierUserInfo = feed.feedID?.userInfo ?? [AnyHashable: Any]()
activity.userInfo = [UserInfoKey.feedIdentifier: articleFetcherIdentifierUserInfo]
let articleFetcherIdentifierUserInfo = feed.itemID?.userInfo ?? [AnyHashable: Any]()
activity.userInfo = [UserInfoKey.itemIdentifier: articleFetcherIdentifierUserInfo]
activity.requiredUserInfoKeys = Set(activity.userInfo!.keys.map { $0 as! String })
activity.persistentIdentifier = feed.feedID?.description ?? ""
activity.persistentIdentifier = feed.itemID?.description ?? ""
#if os(iOS)
activity.suggestedInvocationPhrase = title
@@ -192,9 +192,9 @@ private extension ActivityManager {
activity.title = ArticleStringFormatter.truncatedTitle(article)
if let feed = feed {
let articleFetcherIdentifierUserInfo = feed.feedID?.userInfo ?? [AnyHashable: Any]()
let articleFetcherIdentifierUserInfo = feed.itemID?.userInfo ?? [AnyHashable: Any]()
let articlePathUserInfo = article.pathUserInfo
activity.userInfo = [UserInfoKey.feedIdentifier: articleFetcherIdentifierUserInfo, UserInfoKey.articlePath: articlePathUserInfo]
activity.userInfo = [UserInfoKey.itemIdentifier: articleFetcherIdentifierUserInfo, UserInfoKey.articlePath: articlePathUserInfo]
} else {
activity.userInfo = [UserInfoKey.articlePath: article.pathUserInfo]
}

View File

@@ -14,35 +14,35 @@ class IconImageCache {
static var shared = IconImageCache()
private var smartFeedIconImageCache = [FeedIdentifier: IconImage]()
private var webFeedIconImageCache = [FeedIdentifier: IconImage]()
private var faviconImageCache = [FeedIdentifier: IconImage]()
private var smallIconImageCache = [FeedIdentifier: IconImage]()
private var smartFeedIconImageCache = [ItemIdentifier: IconImage]()
private var webFeedIconImageCache = [ItemIdentifier: IconImage]()
private var faviconImageCache = [ItemIdentifier: IconImage]()
private var smallIconImageCache = [ItemIdentifier: IconImage]()
private var authorIconImageCache = [Author: IconImage]()
func imageFor(_ feedID: FeedIdentifier) -> IconImage? {
if let smartFeed = SmartFeedsController.shared.find(by: feedID) {
func imageFor(_ itemID: ItemIdentifier) -> IconImage? {
if let smartFeed = SmartFeedsController.shared.find(by: itemID) {
return imageForFeed(smartFeed)
}
if let feed = AccountManager.shared.existingFeed(with: feedID) {
if let feed = AccountManager.shared.existingFeed(with: itemID) {
return imageForFeed(feed)
}
return nil
}
func imageForFeed(_ feed: FeedProtocol) -> IconImage? {
guard let feedID = feed.feedID else {
guard let itemID = feed.itemID else {
return nil
}
if let smartFeed = feed as? PseudoFeed {
return imageForSmartFeed(smartFeed, feedID)
return imageForSmartFeed(smartFeed, itemID)
}
if let webFeed = feed as? WebFeed, let iconImage = imageForWebFeed(webFeed, feedID) {
if let webFeed = feed as? WebFeed, let iconImage = imageForWebFeed(webFeed, itemID) {
return iconImage
}
if let smallIconProvider = feed as? SmallIconProvider {
return imageForSmallIconProvider(smallIconProvider, feedID)
return imageForSmallIconProvider(smallIconProvider, itemID)
}
return nil
@@ -59,51 +59,51 @@ class IconImageCache {
}
func emptyCache() {
smartFeedIconImageCache = [FeedIdentifier: IconImage]()
webFeedIconImageCache = [FeedIdentifier: IconImage]()
faviconImageCache = [FeedIdentifier: IconImage]()
smallIconImageCache = [FeedIdentifier: IconImage]()
smartFeedIconImageCache = [ItemIdentifier: IconImage]()
webFeedIconImageCache = [ItemIdentifier: IconImage]()
faviconImageCache = [ItemIdentifier: IconImage]()
smallIconImageCache = [ItemIdentifier: IconImage]()
authorIconImageCache = [Author: IconImage]()
}
}
private extension IconImageCache {
func imageForSmartFeed(_ smartFeed: PseudoFeed, _ feedID: FeedIdentifier) -> IconImage? {
if let iconImage = smartFeedIconImageCache[feedID] {
func imageForSmartFeed(_ smartFeed: PseudoFeed, _ itemID: ItemIdentifier) -> IconImage? {
if let iconImage = smartFeedIconImageCache[itemID] {
return iconImage
}
if let iconImage = smartFeed.smallIcon {
smartFeedIconImageCache[feedID] = iconImage
smartFeedIconImageCache[itemID] = iconImage
return iconImage
}
return nil
}
func imageForWebFeed(_ webFeed: WebFeed, _ feedID: FeedIdentifier) -> IconImage? {
if let iconImage = webFeedIconImageCache[feedID] {
func imageForWebFeed(_ webFeed: WebFeed, _ itemID: ItemIdentifier) -> IconImage? {
if let iconImage = webFeedIconImageCache[itemID] {
return iconImage
}
if let iconImage = appDelegate.webFeedIconDownloader.icon(for: webFeed) {
webFeedIconImageCache[feedID] = iconImage
webFeedIconImageCache[itemID] = iconImage
return iconImage
}
if let faviconImage = faviconImageCache[feedID] {
if let faviconImage = faviconImageCache[itemID] {
return faviconImage
}
if let faviconImage = appDelegate.faviconDownloader.faviconAsIcon(for: webFeed) {
faviconImageCache[feedID] = faviconImage
faviconImageCache[itemID] = faviconImage
return faviconImage
}
return nil
}
func imageForSmallIconProvider(_ provider: SmallIconProvider, _ feedID: FeedIdentifier) -> IconImage? {
if let iconImage = smallIconImageCache[feedID] {
func imageForSmallIconProvider(_ provider: SmallIconProvider, _ itemID: ItemIdentifier) -> IconImage? {
if let iconImage = smallIconImageCache[itemID] {
return iconImage
}
if let iconImage = provider.smallIcon {
smallIconImageCache[feedID] = iconImage
smallIconImageCache[itemID] = iconImage
return iconImage
}
return nil

View File

@@ -14,8 +14,8 @@ import ArticlesDatabase
struct SearchFeedDelegate: SmartFeedDelegate {
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: SearchFeedDelegate.self))
var itemID: ItemIdentifier? {
return ItemIdentifier.smartFeed(String(describing: SearchFeedDelegate.self))
}
var nameForDisplay: String {

View File

@@ -14,8 +14,8 @@ import ArticlesDatabase
struct SearchTimelineFeedDelegate: SmartFeedDelegate {
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: SearchTimelineFeedDelegate.self))
var itemID: ItemIdentifier? {
return ItemIdentifier.smartFeed(String(describing: SearchTimelineFeedDelegate.self))
}
var nameForDisplay: String {

View File

@@ -20,8 +20,8 @@ final class SmartFeed: PseudoFeed {
return .none
}
var feedID: FeedIdentifier? {
delegate.feedID
var itemID: ItemIdentifier? {
delegate.itemID
}
var nameForDisplay: String {

View File

@@ -12,7 +12,7 @@ import Articles
import ArticlesDatabase
import RSCore
protocol SmartFeedDelegate: FeedIdentifiable, DisplayNameProvider, ArticleFetcher, SmallIconProvider {
protocol SmartFeedDelegate: ItemIdentifiable, DisplayNameProvider, ArticleFetcher, SmallIconProvider {
var fetchType: FetchType { get }
func fetchUnreadCount(for: Account, completion: @escaping SingleUnreadCountCompletionBlock)
}

View File

@@ -28,7 +28,7 @@ final class SmartFeedsController: DisplayNameProvider, ContainerIdentifiable {
self.smartFeeds = [todayFeed, unreadFeed, starredFeed]
}
func find(by identifier: FeedIdentifier) -> PseudoFeed? {
func find(by identifier: ItemIdentifier) -> PseudoFeed? {
switch identifier {
case .smartFeed(let stringIdentifer):
switch stringIdentifer {

View File

@@ -16,8 +16,8 @@ import Account
struct StarredFeedDelegate: SmartFeedDelegate {
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: StarredFeedDelegate.self))
var itemID: ItemIdentifier? {
return ItemIdentifier.smartFeed(String(describing: StarredFeedDelegate.self))
}
let nameForDisplay = NSLocalizedString("smartfeed.title.starred", comment: "Starred pseudo-feed title")

View File

@@ -14,8 +14,8 @@ import Account
struct TodayFeedDelegate: SmartFeedDelegate {
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: TodayFeedDelegate.self))
var itemID: ItemIdentifier? {
return ItemIdentifier.smartFeed(String(describing: TodayFeedDelegate.self))
}
let nameForDisplay = NSLocalizedString("smartfeed.title.today", comment: "Today pseudo-feed title")

View File

@@ -26,8 +26,8 @@ final class UnreadFeed: PseudoFeed {
return .alwaysRead
}
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: UnreadFeed.self))
var itemID: ItemIdentifier? {
return ItemIdentifier.smartFeed(String(describing: UnreadFeed.self))
}
let nameForDisplay = NSLocalizedString("smartfeed.title.allunread", comment: "All Unread pseudo-feed title")

View File

@@ -19,13 +19,13 @@ typealias FetchRequestOperationResultBlock = (Set<Article>, FetchRequestOperatio
final class FetchRequestOperation {
let id: Int
let readFilterEnabledTable: [FeedIdentifier: Bool]
let readFilterEnabledTable: [ItemIdentifier: Bool]
let resultBlock: FetchRequestOperationResultBlock
var isCanceled = false
var isFinished = false
private let fetchers: [ArticleFetcher]
init(id: Int, readFilterEnabledTable: [FeedIdentifier: Bool], fetchers: [ArticleFetcher], resultBlock: @escaping FetchRequestOperationResultBlock) {
init(id: Int, readFilterEnabledTable: [ItemIdentifier: Bool], fetchers: [ArticleFetcher], resultBlock: @escaping FetchRequestOperationResultBlock) {
precondition(Thread.isMainThread)
self.id = id
self.readFilterEnabledTable = readFilterEnabledTable

View File

@@ -13,15 +13,15 @@ import Account
final class FeedTreeControllerDelegate: TreeControllerDelegate {
private var filterExceptions = Set<FeedIdentifier>()
private var filterExceptions = Set<ItemIdentifier>()
var isReadFiltered = false
func addFilterException(_ feedID: FeedIdentifier) {
filterExceptions.insert(feedID)
func addFilterException(_ itemID: ItemIdentifier) {
filterExceptions.insert(itemID)
}
func resetFilterExceptions() {
filterExceptions = Set<FeedIdentifier>()
filterExceptions = Set<ItemIdentifier>()
}
func treeController(treeController: TreeController, childNodesFor node: Node) -> [Node]? {
@@ -67,14 +67,14 @@ private extension FeedTreeControllerDelegate {
var children = [AnyObject]()
for webFeed in container.topLevelWebFeeds {
if let feedID = webFeed.feedID, !(!filterExceptions.contains(feedID) && isReadFiltered && webFeed.unreadCount == 0) {
if let itemID = webFeed.itemID, !(!filterExceptions.contains(itemID) && isReadFiltered && webFeed.unreadCount == 0) {
children.append(webFeed)
}
}
if let folders = container.folders {
for folder in folders {
if let feedID = folder.feedID, !(!filterExceptions.contains(feedID) && isReadFiltered && folder.unreadCount == 0) {
if let itemID = folder.itemID, !(!filterExceptions.contains(itemID) && isReadFiltered && folder.unreadCount == 0) {
children.append(folder)
}
}

View File

@@ -13,7 +13,7 @@ struct UserInfoKey {
static let webFeed = "webFeed"
static let url = "url"
static let articlePath = "articlePath"
static let feedIdentifier = "feedIdentifier"
static let itemIdentifier = "itemIdentifier"
static let windowState = "windowState"
static let windowFullScreenState = "windowFullScreenState"