@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
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
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
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)
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')
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
- 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