mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2025-02-02 03:56:55 +01:00
Add subreddit name to meta feeds
This commit is contained in:
parent
faaf280d12
commit
de15c1c78d
@ -29,7 +29,7 @@ public protocol FeedProvider {
|
||||
/// Provide the iconURL of the given URL
|
||||
func iconURL(_ urlComponents: URLComponents, completion: @escaping (Result<String, Error>) -> 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<FeedProviderFeedMetaData, Error>) -> Void)
|
||||
|
||||
/// Refresh all the article entries (ParsedItems)
|
||||
|
@ -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<ParsedItem> {
|
||||
func makeParsedItems(_ webFeedURL: String,_ identifySubreddit: Bool, _ linkListing: RedditLinkListing) -> Set<ParsedItem> {
|
||||
var parsedItems = Set<ParsedItem>()
|
||||
|
||||
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,
|
||||
|
@ -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 += "<h3><a href=\"https://www.reddit.com/\(subredditNamePrefixed)\">\(subredditNamePrefixed)</a></h3>"
|
||||
}
|
||||
|
||||
if let parent = crossPostParents?.first {
|
||||
var html = "<blockquote>"
|
||||
html += "<blockquote>"
|
||||
if let subreddit = parent.subredditNamePrefixed {
|
||||
html += "<p><a href=\"https://www.reddit.com/\(subreddit)\">\(subreddit)</a></p>"
|
||||
}
|
||||
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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user