]>
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
|
14 @body_classes = 'with-modals'
16 @endorsed_accounts = @account.endorsed_accounts
.to_a
.sample(4)
18 if current_account
&& @account.blocking
?(current_account
)
23 @pinned_statuses = cache_collection(@account.pinned_statuses
, Status
) if show_pinned_statuses
?
24 @statuses = filtered_status_page(params
)
25 @statuses = cache_collection(@statuses, Status
)
27 unless @statuses.empty
?
28 @older_url = older_url
if @statuses.last
.id
> filtered_statuses
.last
.id
29 @newer_url = newer_url
if @statuses.first
.id
< filtered_statuses
.first
.id
34 @entries = @account.stream_entries
.where(hidden
: false).with_includes
.paginate_by_max_id(PAGE_SIZE
, params
[:max_id], params
[:since_id])
35 render xml
: OStatus
::AtomSerializer.render(OStatus
::AtomSerializer.new
.feed(@account, @entries.reject
{ |entry
| entry
.status
.nil? }))
39 @statuses = cache_collection(default_statuses
.without_reblogs
.without_replies
.limit(PAGE_SIZE
), Status
)
40 render xml
: RSS
::AccountSerializer.render(@account, @statuses)
46 render_cached_json(['activitypub', 'actor', @account], content_type
: 'application/activity+json
') do
47 ActiveModelSerializers::SerializableResource.new(@account, serializer: ActivityPub::ActorSerializer, adapter: ActivityPub::Adapter)
55 def show_pinned_statuses?
56 [replies_requested?, media_requested?, params[:max_id].present?, params[:min_id].present?].none?
60 default_statuses.tap do |statuses|
61 statuses.merge!(only_media_scope
) if media_requested
?
62 statuses
.merge!
(no_replies_scope
) unless replies_requested
?
67 @account.statuses
.not_local_only
.where(visibility
: [:public, :unlisted])
71 Status
.where(id
: account_media_status_ids
)
74 def account_media_status_ids
75 @account.media_attachments
.attached
.reorder(nil).select(:status_id).distinct
79 Status
.without_replies
83 @account = Account
.find_local!
(params
[:username])
87 ::Rails.logger
.info("older: max_id #{@statuses.last.id}, url #{pagination_url(max_id: @statuses.last.id)}")
88 pagination_url(max_id
: @statuses.last
.id
)
92 pagination_url(min_id
: @statuses.first
.id
)
95 def pagination_url(max_id
: nil, min_id
: nil)
97 short_account_media_url(@account, max_id
: max_id
, min_id
: min_id
)
98 elsif replies_requested
?
99 short_account_with_replies_url(@account, max_id
: max_id
, min_id
: min_id
)
101 short_account_url(@account, max_id
: max_id
, min_id
: min_id
)
106 request
.path
.ends_with
?('/media')
109 def replies_requested
?
110 request
.path
.ends_with
?('/with_replies')
113 def filtered_status_page(params
)
114 if params
[:min_id].present
?
115 filtered_statuses
.paginate_by_min_id(PAGE_SIZE
, params
[:min_id]).reverse
117 filtered_statuses
.paginate_by_max_id(PAGE_SIZE
, params
[:max_id], params
[:since_id]).to_a
This page took 0.092693 seconds and 4 git commands to generate.