diff --git a/Frameworks/Account/FeedProvider/FeedProvider.swift b/Frameworks/Account/FeedProvider/FeedProvider.swift index d11d56e13..065547372 100644 --- a/Frameworks/Account/FeedProvider/FeedProvider.swift +++ b/Frameworks/Account/FeedProvider/FeedProvider.swift @@ -29,7 +29,7 @@ public protocol FeedProvider { /// Provide the iconURL of the given URL func iconURL(_ urlComponents: URLComponents, completion: @escaping (Result) -> Void) - /// Construct the associated metadata for the new feed. If the URL won't be recognized by this Feed Provider, it will error here. + /// Construct the associated metadata for the new feed func metaData(_ urlComponents: URLComponents, completion: @escaping (Result) -> Void) /// Refresh all the article entries (ParsedItems) diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift b/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift index e3f683bbb..f17dc9343 100644 --- a/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift +++ b/Frameworks/Account/FeedProvider/Reddit/RedditFeedProvider.swift @@ -164,10 +164,12 @@ public final class RedditFeedProvider: FeedProvider { api = "\(urlComponents.path).json" } + let identifySubreddit = !urlComponents.path.hasPrefix("/r/") + fetch(api: api, parameters: [:], resultType: RedditLinkListing.self) { result in switch result { case .success(let linkListing): - let parsedItems = self.makeParsedItems(webFeed.url, linkListing) + let parsedItems = self.makeParsedItems(webFeed.url, identifySubreddit, linkListing) completion(.success(parsedItems)) case .failure(let error): completion(.failure(error)) @@ -316,7 +318,7 @@ private extension RedditFeedProvider { } } - func makeParsedItems(_ webFeedURL: String, _ linkListing: RedditLinkListing) -> Set { + func makeParsedItems(_ webFeedURL: String,_ identifySubreddit: Bool, _ linkListing: RedditLinkListing) -> Set { var parsedItems = Set() guard let linkDatas = linkListing.data?.children?.compactMap({ $0.data }), !linkDatas.isEmpty else { @@ -333,7 +335,7 @@ private extension RedditFeedProvider { externalURL: linkData.url, title: linkData.title, language: nil, - contentHTML: linkData.renderAsHTML(), + contentHTML: linkData.renderAsHTML(identifySubreddit: identifySubreddit), contentText: linkData.selfText, summary: nil, imageURL: nil, diff --git a/Frameworks/Account/FeedProvider/Reddit/RedditLink.swift b/Frameworks/Account/FeedProvider/Reddit/RedditLink.swift index e9f2766ff..314fc404a 100644 --- a/Frameworks/Account/FeedProvider/Reddit/RedditLink.swift +++ b/Frameworks/Account/FeedProvider/Reddit/RedditLink.swift @@ -61,13 +61,19 @@ final class RedditLinkData: Codable { return Date(timeIntervalSince1970: created) } - func renderAsHTML() -> String { + func renderAsHTML(identifySubreddit: Bool) -> String { + var html = String() + + if identifySubreddit, let subredditNamePrefixed = subredditNamePrefixed { + html += "

\(subredditNamePrefixed)

" + } + if let parent = crossPostParents?.first { - var html = "
" + html += "
" if let subreddit = parent.subredditNamePrefixed { html += "

\(subreddit)

" } - let parentHTML = parent.renderAsHTML() + let parentHTML = parent.renderAsHTML(identifySubreddit: false) if parentHTML.isEmpty { html += renderURLAsHTML() } else { @@ -77,7 +83,6 @@ final class RedditLinkData: Codable { return html } - var html = String() if let selfHTML = selfHTML { html += selfHTML }