diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-03-26 02:53:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-26 02:53:34 +0100 |
commit | cefa526c6d3a45df2d0fcb7643ced828e2e87dea (patch) | |
tree | e3d19aa7d0881ae59d25692fb0c16b781c691b40 /app/lib/rss | |
parent | 2dd30804b62f750c2780b7043318cbe00d137429 (diff) |
Refactor formatter (#17828)
* Refactor formatter * Move custom emoji pre-rendering logic to view helpers * Move more methods out of Formatter * Fix code style issues * Remove Formatter * Add inline poll options to RSS feeds * Remove unused helper method * Fix code style issues * Various fixes and improvements * Fix test
Diffstat (limited to 'app/lib/rss')
-rw-r--r-- | app/lib/rss/serializer.rb | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/app/lib/rss/serializer.rb b/app/lib/rss/serializer.rb index 7e3ed1f17..d44e94221 100644 --- a/app/lib/rss/serializer.rb +++ b/app/lib/rss/serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class RSS::Serializer + include FormattingHelper + private def render_statuses(builder, statuses) @@ -9,7 +11,7 @@ class RSS::Serializer item.title(status_title(status)) .link(ActivityPub::TagManager.instance.url_for(status)) .pub_date(status.created_at) - .description(status.spoiler_text.presence || Formatter.instance.format(status, inline_poll_options: true).to_str) + .description(status_description(status)) status.ordered_media_attachments.each do |media| item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) @@ -19,9 +21,8 @@ class RSS::Serializer end def status_title(status) - return "#{status.account.acct} deleted status" if status.destroyed? - preview = status.proper.spoiler_text.presence || status.proper.text + if preview.length > 30 || preview[0, 30].include?("\n") preview = preview[0, 30] preview = preview[0, preview.index("\n").presence || 30] + '…' @@ -35,4 +36,20 @@ class RSS::Serializer "#{status.account.acct}: #{preview}" end end + + def status_description(status) + if status.proper.spoiler_text? + status.proper.spoiler_text + else + html = status_content_format(status.proper).to_str + after_html = '' + + if status.proper.preloadable_poll + poll_options_html = status.proper.preloadable_poll.options.map { |o| "[ ] #{o}" }.join('<br />') + after_html = "<p>#{poll_options_html}</p>" + end + + "#{html}#{after_html}" + end + end end |