From 2a0d75cf2304b854ef980cb3d2302b6fdff50383 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 18 Apr 2020 10:41:18 -0500 Subject: [PATCH] Add rendering as HTML --- .../FeedProvider/Twitter/TwitterStatus.swift | 35 ++++++++++++++++++- .../FeedProvider/Twitter/TwitterUser.swift | 17 +++++++++ Mac/MainWindow/Detail/styleSheet.css | 15 ++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterStatus.swift b/Frameworks/Account/FeedProvider/Twitter/TwitterStatus.swift index b675d1be7..d0037df5f 100644 --- a/Frameworks/Account/FeedProvider/Twitter/TwitterStatus.swift +++ b/Frameworks/Account/FeedProvider/Twitter/TwitterStatus.swift @@ -53,7 +53,40 @@ final class TwitterStatus: Codable { } func renderAsHTML() -> String? { - return nil + if let retweetedStatus = retweetedStatus { + return renderAsRetweetHTML(retweetedStatus) + } + if let quotedStatus = quotedStatus { + return renderAsQuoteHTML(quotedStatus) + } + return renderAsTweetHTML(self) + } + + func renderAsTweetHTML(_ status: TwitterStatus) -> String? { + return status.displayText + } + + func renderAsRetweetHTML(_ status: TwitterStatus) -> String { + var html = String() + html += "
" + if let userHTML = status.user?.renderHTML() { + html += userHTML + } + html += renderAsTweetHTML(status) ?? "" + html += "
" + return html + } + + func renderAsQuoteHTML(_ quotedStatus: TwitterStatus) -> String { + var html = String() + html += renderAsTweetHTML(self) ?? "" + html += "
" + if let userHTML = quotedStatus.user?.renderHTML() { + html += userHTML + } + html += renderAsTweetHTML(quotedStatus) ?? "" + html += "
" + return html } } diff --git a/Frameworks/Account/FeedProvider/Twitter/TwitterUser.swift b/Frameworks/Account/FeedProvider/Twitter/TwitterUser.swift index 6d10fac7b..1d4942416 100644 --- a/Frameworks/Account/FeedProvider/Twitter/TwitterUser.swift +++ b/Frameworks/Account/FeedProvider/Twitter/TwitterUser.swift @@ -24,4 +24,21 @@ struct TwitterUser: Codable { return "https://twitter.com/\(screenName ?? "")" } + func renderHTML() -> String? { + var html = String() + html += "
" + if let avatarURL = avatarURL { + html += "" + } + html += "" + if let name = name { + html += " \(name)" + } + if let screenName = screenName { + html += " @\(screenName)" + } + html += "
" + return html + } + } diff --git a/Mac/MainWindow/Detail/styleSheet.css b/Mac/MainWindow/Detail/styleSheet.css index ea9723bb9..32e3e3926 100644 --- a/Mac/MainWindow/Detail/styleSheet.css +++ b/Mac/MainWindow/Detail/styleSheet.css @@ -243,6 +243,21 @@ blockquote { max-height: 1em; } +/* Twitter */ + +.twitterAvatar { + vertical-align: middle; + border-radius: 4px; + height: 24px; + width: 24px; +} + +.twitterUsername { + margin-left: 4px; + display: inline-block; + vertical-align: middle; +} + /*Block ads and junk*/ iframe[src*="feedads"],