From 55166e0979b03ae54b3852fc29aa19f9e1c6c158 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 25 Nov 2017 12:17:49 -0800 Subject: [PATCH] Update a Feed with settings taken from the raw feed. (Some Feeds had no homePageURL set, which meant, in most cases, no favicons.) --- Frameworks/Account/Account.swift | 7 +------ Frameworks/Account/DataExtensions.swift | 27 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) 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 {