]>
cat aescling's git repositories - mastodon.git/blob - app/controllers/accounts_controller.rb
1 # frozen_string_literal: true
3 class AccountsController
< ApplicationController
6 include AccountControllerConcern
8 before_action
:set_cache_headers
11 respond_to
do |format
|
13 @body_classes = 'with-modals'
15 @endorsed_accounts = @account.endorsed_accounts
.to_a
.sample(4)
17 if current_account
&& @account.blocking
?(current_account
)
22 @pinned_statuses = cache_collection(@account.pinned_statuses
, Status
) if show_pinned_statuses
?
23 @statuses = filtered_status_page(params
)
24 @statuses = cache_collection(@statuses, Status
)
26 unless @statuses.empty
?
27 @older_url = older_url
if @statuses.last
.id
> filtered_statuses
.last
.id
28 @newer_url = newer_url
if @statuses.first
.id
< filtered_statuses
.first
.id
33 @entries = @account.stream_entries
.where(hidden
: false).with_includes
.paginate_by_max_id(PAGE_SIZE
, params
[:max_id], params
[:since_id])
34 render xml
: OStatus
::AtomSerializer.render(OStatus
::AtomSerializer.new
.feed(@account, @entries.reject
{ |entry
| entry
.status
.nil? }))
38 @statuses = cache_collection(default_statuses
.without_reblogs
.without_replies
.limit(PAGE_SIZE
), Status
)
39 render xml
: RSS
::AccountSerializer.render(@account, @statuses)
45 render_cached_json(['activitypub', 'actor', @account], content_type
: 'application/activity+json
') do
46 ActiveModelSerializers::SerializableResource.new(@account, serializer: ActivityPub::ActorSerializer, adapter: ActivityPub::Adapter)
54 def show_pinned_statuses?
55 [replies_requested?, media_requested?, params[:max_id].present?, params[:min_id].present?].none?
59 default_statuses.tap do |statuses|
60 statuses.merge!(only_media_scope
) if media_requested
?
61 statuses
.merge!
(no_replies_scope
) unless replies_requested
?
66 @account.statuses
.where(visibility
: [:public, :unlisted])
70 Status
.where(id
: account_media_status_ids
)
73 def account_media_status_ids
74 @account.media_attachments
.attached
.reorder(nil).select(:status_id).distinct
78 Status
.without_replies
82 @account = Account
.find_local!
(params
[:username])
86 ::Rails.logger
.info("older: max_id #{@statuses.last.id}, url #{pagination_url(max_id: @statuses.last.id)}")
87 pagination_url(max_id
: @statuses.last
.id
)
91 pagination_url(min_id
: @statuses.first
.id
)
94 def pagination_url(max_id
: nil, min_id
: nil)
96 short_account_media_url(@account, max_id
: max_id
, min_id
: min_id
)
97 elsif replies_requested
?
98 short_account_with_replies_url(@account, max_id
: max_id
, min_id
: min_id
)
100 short_account_url(@account, max_id
: max_id
, min_id
: min_id
)
105 request
.path
.ends_with
?('/media')
108 def replies_requested
?
109 request
.path
.ends_with
?('/with_replies')
112 def filtered_status_page(params
)
113 if params
[:min_id].present
?
114 filtered_statuses
.paginate_by_min_id(PAGE_SIZE
, params
[:min_id]).reverse
116 filtered_statuses
.paginate_by_max_id(PAGE_SIZE
, params
[:max_id], params
[:since_id]).to_a
This page took 0.097835 seconds and 4 git commands to generate.