diff --git a/Evergreen/MainWindow/Detail/ArticleRenderer.swift b/Evergreen/MainWindow/Detail/ArticleRenderer.swift
index a1ab3ecd2..df1c59dff 100644
--- a/Evergreen/MainWindow/Detail/ArticleRenderer.swift
+++ b/Evergreen/MainWindow/Detail/ArticleRenderer.swift
@@ -19,6 +19,7 @@ class ArticleRenderer {
let article: Article
let articleStyle: ArticleStyle
+ static var faviconImgTagCache = [Feed: String]()
lazy var longDateFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
@@ -169,21 +170,11 @@ class ArticleRenderer {
d["newsitem_description"] = body
d["avatars"] = ""
+ var didAddAvatar = false
if let avatar = avatarToUse() {
let avatarHTML = avatar.html(dimension: 64)
d["avatars"] = avatarHTML
-// var ix = 0
-// let ct = avatars.count
-// for avatar in avatars {
-// avatarHTML += avatar.html(dimension: 64)
-// if ix < ct - 1 {
-// avatarHTML += " "
-// }
-// ix += 1
-// }
-// if !avatarHTML.isEmpty {
-// d["avatars"] = avatarHTML
-// }
+ didAddAvatar = true
}
var feedLink = ""
@@ -196,6 +187,13 @@ class ArticleRenderer {
d["feedlink"] = feedLink
d["feedlink_withfavicon"] = feedLink
+ d["favicon"] = ""
+ if !didAddAvatar, let feed = article.feed {
+ if let favicon = faviconImgTag(forFeed: feed) {
+ d["favicon"] = favicon
+ }
+ }
+
let longDate = longDateFormatter.string(from: article.logicalDatePublished)
let mediumDate = mediumDateFormatter.string(from: article.logicalDatePublished)
let shortDate = shortDateFormatter.string(from: article.logicalDatePublished)
@@ -230,6 +228,30 @@ class ArticleRenderer {
}
}
+ private func faviconImgTag(forFeed feed: Feed) -> String? {
+
+ if let cachedImgTag = ArticleRenderer.faviconImgTagCache[feed] {
+ return cachedImgTag
+ }
+
+ if let favicon = appDelegate.faviconDownloader.favicon(for: feed) {
+ if let s = base64String(forImage: favicon) {
+ let imgTag = ""
+ ArticleRenderer.faviconImgTagCache[feed] = imgTag
+ return imgTag
+ }
+ }
+
+ return nil
+ }
+
+ private func base64String(forImage image: NSImage) -> String? {
+
+
+ let d = image.tiffRepresentation
+ return d?.base64EncodedString()
+ }
+
private func singleArticleSpecifiedAuthor() -> Author? {
// The author of this article, if just one.
diff --git a/Evergreen/Resources/styleSheet.css b/Evergreen/Resources/styleSheet.css
index e7f4f811b..b63758b33 100644
--- a/Evergreen/Resources/styleSheet.css
+++ b/Evergreen/Resources/styleSheet.css
@@ -68,7 +68,7 @@ a:hover {
.headerTable {
widtdh: 100%;
}
-.headerContainer img {
+.avatar img {
border-radius: 7px;
margin-right: 8px;
}
diff --git a/Evergreen/Resources/template.html b/Evergreen/Resources/template.html
index 69cdaa44c..c9206c2e2 100644
--- a/Evergreen/Resources/template.html
+++ b/Evergreen/Resources/template.html
@@ -3,8 +3,8 @@
| [[avatars]] | -[[feedlink]] [[byline]] |
+ [[avatars]] | +[[favicon]] [[feedlink]] [[byline]] |