Implement Feed protocol.

This commit is contained in:
Maurice Parker
2019-11-15 06:19:14 -06:00
parent 3fb1a3b8cc
commit 5283d2efbe
19 changed files with 119 additions and 107 deletions

View File

@@ -13,12 +13,11 @@ import Articles
import Account
import RSCore
protocol PseudoFeed: class, DisplayNameProvider, UnreadCountProvider, SmallIconProvider, PasteboardWriterOwner {
protocol PseudoFeed: class, Feed, SmallIconProvider, PasteboardWriterOwner {
}
private var smartFeedIcon: RSImage = {
return RSImage(named: NSImage.smartBadgeTemplateName)!
}()
@@ -35,7 +34,7 @@ import Articles
import Account
import RSCore
protocol PseudoFeed: class, DisplayNameProvider, UnreadCountProvider, SmallIconProvider {
protocol PseudoFeed: class, Feed, SmallIconProvider {
}

View File

@@ -13,8 +13,8 @@ import Articles
struct SearchFeedDelegate: SmartFeedDelegate {
var articleFetcherType: ArticleFetcherType? {
return ArticleFetcherType.smartFeed(String(describing: SearchFeedDelegate.self))
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: SearchFeedDelegate.self))
}
var nameForDisplay: String {

View File

@@ -13,8 +13,8 @@ import Articles
struct SearchTimelineFeedDelegate: SmartFeedDelegate {
var articleFetcherType: ArticleFetcherType? {
return ArticleFetcherType.smartFeed(String(describing: SearchTimelineFeedDelegate.self))
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: SearchTimelineFeedDelegate.self))
}
var nameForDisplay: String {

View File

@@ -13,6 +13,10 @@ import Account
final class SmartFeed: PseudoFeed {
var feedID: FeedIdentifier? {
delegate.feedID
}
var nameForDisplay: String {
return delegate.nameForDisplay
}
@@ -71,10 +75,6 @@ final class SmartFeed: PseudoFeed {
}
extension SmartFeed: ArticleFetcher {
var articleFetcherType: ArticleFetcherType? {
delegate.articleFetcherType
}
func fetchArticles() -> Set<Article> {
return delegate.fetchArticles()

View File

@@ -11,10 +11,8 @@ import Account
import Articles
import RSCore
protocol SmartFeedDelegate: DisplayNameProvider, ArticleFetcher, SmallIconProvider {
protocol SmartFeedDelegate: FeedIdentifiable, DisplayNameProvider, ArticleFetcher, SmallIconProvider {
var fetchType: FetchType { get }
func fetchUnreadCount(for: Account, callback: @escaping (Int) -> Void)
}

View File

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

View File

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

View File

@@ -19,6 +19,10 @@ import Articles
final class UnreadFeed: PseudoFeed {
var feedID: FeedIdentifier? {
return FeedIdentifier.smartFeed(String(describing: UnreadFeed.self))
}
let nameForDisplay = NSLocalizedString("All Unread", comment: "All Unread pseudo-feed title")
let fetchType = FetchType.unread
@@ -53,10 +57,6 @@ final class UnreadFeed: PseudoFeed {
extension UnreadFeed: ArticleFetcher {
var articleFetcherType: ArticleFetcherType? {
return ArticleFetcherType.smartFeed(String(describing: UnreadFeed.self))
}
func fetchArticles() -> Set<Article> {
return fetchUnreadArticles()
}