mirror of
https://github.com/mastodon/mastodon
synced 2024-12-15 15:18:14 +09:00
a4240fd027
* Improve RSS entries for statuses - Render polls in both accounts and tags serializers - Refactor RSS serializers - Change title preview to include ellipsis when truncated - Change title preview to show CW instead of toot text - Add tests * Remove title from OEmbed serialization Twitter doesn't serialize title either, and tihs allows us to move the title formatting code to the RSS serializers.
39 lines
1.3 KiB
Ruby
39 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class RSS::Serializer
|
|
private
|
|
|
|
def render_statuses(builder, statuses)
|
|
statuses.each do |status|
|
|
builder.item do |item|
|
|
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)
|
|
|
|
status.media_attachments.each do |media|
|
|
item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size)
|
|
end
|
|
end
|
|
end
|
|
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] + '…'
|
|
end
|
|
|
|
preview = "#{status.proper.spoiler_text.present? ? 'CW ' : ''}“#{preview}”#{status.proper.sensitive? ? ' (sensitive)' : ''}"
|
|
|
|
if status.reblog?
|
|
"#{status.account.acct} boosted #{status.reblog.account.acct}: #{preview}"
|
|
else
|
|
"#{status.account.acct}: #{preview}"
|
|
end
|
|
end
|
|
end
|