Refactor SmartFeedController to find SmartFeeds by FeedIdentifier instead of the string identifier.

This commit is contained in:
Maurice Parker 2019-11-23 12:30:18 -06:00
parent 01f86d8c1b
commit 6d18cfec7c
2 changed files with 20 additions and 15 deletions

View File

@ -24,8 +24,10 @@ final class SmartFeedsController: DisplayNameProvider {
self.smartFeeds = [todayFeed, unreadFeed, starredFeed]
}
func find(by identifier: String) -> PseudoFeed? {
func find(by identifier: FeedIdentifier) -> PseudoFeed? {
switch identifier {
case .smartFeed(let stringIdentifer):
switch stringIdentifer {
case String(describing: TodayFeedDelegate.self):
return todayFeed
case String(describing: UnreadFeed.self):
@ -35,6 +37,9 @@ final class SmartFeedsController: DisplayNameProvider {
default:
return nil
}
default:
return nil
}
}
}

View File

@ -1684,14 +1684,14 @@ private extension SceneCoordinator {
func handleSelectFeed(_ userInfo: [AnyHashable : Any]?) {
guard let userInfo = userInfo,
let feedIdentifierUserInfo = userInfo[UserInfoKey.feedIdentifier] as? [AnyHashable : Any],
let articleFetcherType = FeedIdentifier(userInfo: feedIdentifierUserInfo) else {
let feedIdentifier = FeedIdentifier(userInfo: feedIdentifierUserInfo) else {
return
}
switch articleFetcherType {
switch feedIdentifier {
case .smartFeed(let identifier):
guard let smartFeed = SmartFeedsController.shared.find(by: identifier) else { return }
case .smartFeed:
guard let smartFeed = SmartFeedsController.shared.find(by: feedIdentifier) else { return }
if let indexPath = indexPathFor(smartFeed) {
selectFeed(indexPath, animated: false)
}
@ -1744,14 +1744,14 @@ private extension SceneCoordinator {
func restoreFeed(_ userInfo: [AnyHashable : Any], accountID: String, webFeedID: String, articleID: String) -> Bool {
guard let feedIdentifierUserInfo = userInfo[UserInfoKey.feedIdentifier] as? [AnyHashable : Any],
let articleFetcherType = FeedIdentifier(userInfo: feedIdentifierUserInfo) else {
let feedIdentifier = FeedIdentifier(userInfo: feedIdentifierUserInfo) else {
return false
}
switch articleFetcherType {
switch feedIdentifier {
case .smartFeed(let identifier):
guard let smartFeed = SmartFeedsController.shared.find(by: identifier) else { return false }
case .smartFeed:
guard let smartFeed = SmartFeedsController.shared.find(by: feedIdentifier) else { return false }
if smartFeed.fetchArticles().contains(accountID: accountID, articleID: articleID) {
if let indexPath = indexPathFor(smartFeed) {
selectFeed(indexPath, animated: false) {