docbrown/app/controllers/concerns/api/followers_controller.rb
Anna Buianova 07ffb2e3be
Removed spammers from followers list (#20603)
* Remove spam and suspended users from followers list (api and dashboards)

* Fixed the api followers endpoint

* Fixed issue with follower_ids query
2024-02-08 13:57:15 +00:00

35 lines
830 B
Ruby

module Api
module FollowersController
extend ActiveSupport::Concern
include JsonApiSortParam
USERS_ATTRIBUTES_FOR_SERIALIZATION = %i[
id follower_id follower_type created_at
].freeze
private_constant :USERS_ATTRIBUTES_FOR_SERIALIZATION
def users
@follows = Follow.non_suspended("User", @user.id)
.includes(:follower)
.select(USERS_ATTRIBUTES_FOR_SERIALIZATION)
.order(order_criteria)
.page(params[:page])
.per(@follows_limit)
end
private
def limit_per_page(default:, max:)
per_page = (params[:per_page] || default).to_i
@follows_limit = [per_page, max].min
end
def order_criteria
parse_sort_param(
allowed_fields: [:created_at],
default_sort: { created_at: :desc },
)
end
end
end