mastodon/app/controllers/admin/instances_controller.rb

45 lines
1.4 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
module Admin
class InstancesController < BaseController
def index
authorize :instance, :index?
2019-01-08 13:39:49 +01:00
@instances = ordered_instances
end
2019-01-08 13:39:49 +01:00
def show
authorize :instance, :show?
@instance = Instance.new(Account.by_domain_accounts.find_by(domain: params[:id]) || DomainBlock.find_by!(domain: params[:id]))
@following_count = Follow.where(account: Account.where(domain: params[:id])).count
@followers_count = Follow.where(target_account: Account.where(domain: params[:id])).count
@reports_count = Report.where(target_account: Account.where(domain: params[:id])).count
@blocks_count = Block.where(target_account: Account.where(domain: params[:id])).count
@available = DeliveryFailureTracker.available?(Account.select(:shared_inbox_url).where(domain: params[:id]).first&.shared_inbox_url)
@media_storage = MediaAttachment.where(account: Account.where(domain: params[:id])).sum(:file_file_size)
@domain_block = DomainBlock.rule_for(params[:id])
end
private
2017-09-13 12:30:07 +02:00
def filtered_instances
InstanceFilter.new(filter_params).results
end
def paginated_instances
2017-09-13 12:30:07 +02:00
filtered_instances.page(params[:page])
end
helper_method :paginated_instances
def ordered_instances
2019-01-08 13:39:49 +01:00
paginated_instances.map { |resource| Instance.new(resource) }
end
2017-09-13 12:30:07 +02:00
def filter_params
params.permit(:limited, :by_domain)
2017-09-13 12:30:07 +02:00
end
end
end