diff --git a/Frameworks/Account/Account.swift b/Frameworks/Account/Account.swift index 58ac490c6..5052dc0cd 100644 --- a/Frameworks/Account/Account.swift +++ b/Frameworks/Account/Account.swift @@ -150,12 +150,7 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container, func update(_ feed: Feed, with parsedFeed: ParsedFeed, _ completion: @escaping RSVoidCompletionBlock) { - if feed.iconURL != parsedFeed.iconURL { - feed.iconURL = parsedFeed.iconURL - dirty = true - } - if feed.faviconURL != parsedFeed.faviconURL { - feed.faviconURL = parsedFeed.faviconURL + if feed.takeSettings(from: parsedFeed) { dirty = true } diff --git a/Frameworks/Account/DataExtensions.swift b/Frameworks/Account/DataExtensions.swift index 3d6ad3dae..fd07f141c 100644 --- a/Frameworks/Account/DataExtensions.swift +++ b/Frameworks/Account/DataExtensions.swift @@ -8,6 +8,7 @@ import Foundation import Data +import RSParser public extension Feed { @@ -25,6 +26,32 @@ public extension Feed { } return account.fetchArticles(for: self) } + + public func takeSettings(from parsedFeed: ParsedFeed) -> Bool { + + // Return true if anything changed. + + var didChangeAtLeastOneSetting = false + + if iconURL != parsedFeed.iconURL { + iconURL = parsedFeed.iconURL + didChangeAtLeastOneSetting = true + } + if faviconURL != parsedFeed.faviconURL { + faviconURL = parsedFeed.faviconURL + didChangeAtLeastOneSetting = true + } + if homePageURL != parsedFeed.homePageURL { + homePageURL = parsedFeed.homePageURL + didChangeAtLeastOneSetting = true + } + if name != parsedFeed.title { + name = parsedFeed.title + didChangeAtLeastOneSetting = true + } + + return didChangeAtLeastOneSetting + } } public extension Article {