Skip to content

Commit

Permalink
Add an RSS feed tagged to a public profile page (mastodon#10502)
Browse files Browse the repository at this point in the history
* Add featured tag support to rss feed on public account page

* fix codeing style
  • Loading branch information
noellabo authored and hiyuki2578 committed Oct 2, 2019
1 parent 1ec0c3e commit fc5684b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
16 changes: 13 additions & 3 deletions app/controllers/accounts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ def show
@pinned_statuses = cache_collection(@account.pinned_statuses, Status) if show_pinned_statuses?
@statuses = filtered_status_page(params)
@statuses = cache_collection(@statuses, Status)
@rss_url = rss_url

unless @statuses.empty?
@older_url = older_url if @statuses.last.id > filtered_statuses.last.id
Expand All @@ -38,8 +39,9 @@ def show
format.rss do
expires_in 0, public: true

@statuses = cache_collection(default_statuses.without_reblogs.without_replies.limit(PAGE_SIZE), Status)
render xml: RSS::AccountSerializer.render(@account, @statuses)
@statuses = filtered_statuses.without_reblogs.without_replies.limit(PAGE_SIZE)
@statuses = cache_collection(@statuses, Status)
render xml: RSS::AccountSerializer.render(@account, @statuses, params[:tag])
end

format.json do
Expand Down Expand Up @@ -97,6 +99,14 @@ def username_param
params[:username]
end

def rss_url
if tag_requested?
short_account_tag_url(@account, params[:tag], format: 'rss')
else
short_account_url(@account, format: 'rss')
end
end

def older_url
pagination_url(max_id: @statuses.last.id)
end
Expand Down Expand Up @@ -126,7 +136,7 @@ def replies_requested?
end

def tag_requested?
request.path.ends_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize)
request.path.split('.').first.ends_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize)
end

def filtered_status_page(params)
Expand Down
8 changes: 4 additions & 4 deletions app/serializers/rss/account_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ class RSS::AccountSerializer
include StatusesHelper
include RoutingHelper

def render(account, statuses)
def render(account, statuses, tag)
builder = RSSBuilder.new

builder.title("#{display_name(account)} (@#{account.local_username_and_domain})")
.description(account_description(account))
.link(ActivityPub::TagManager.instance.url_for(account))
.link(tag.present? ? short_account_tag_url(account, tag) : short_account_url(account))
.logo(full_pack_url('media/images/logo.svg'))
.accent_color('2b90d9')

Expand All @@ -33,7 +33,7 @@ def render(account, statuses)
builder.to_xml
end

def self.render(account, statuses)
new.render(account, statuses)
def self.render(account, statuses, tag)
new.render(account, statuses, tag)
end
end
2 changes: 1 addition & 1 deletion app/views/accounts/show.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- if @account.user&.setting_noindex
%meta{ name: 'robots', content: 'noindex, noarchive' }/

%link{ rel: 'alternate', type: 'application/rss+xml', href: account_url(@account, format: 'rss') }/
%link{ rel: 'alternate', type: 'application/rss+xml', href: @rss_url }/
%link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/

- if @older_url
Expand Down

0 comments on commit fc5684b

Please sign in to comment.