instances_controller.rb 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # frozen_string_literal: true
  2. module Admin
  3. class InstancesController < BaseController
  4. before_action :set_domain_block, only: :show
  5. before_action :set_domain_allow, only: :show
  6. before_action :set_instance, only: :show
  7. def index
  8. authorize :instance, :index?
  9. @instances = ordered_instances
  10. end
  11. def show
  12. authorize :instance, :show?
  13. @following_count = Follow.where(account: Account.where(domain: params[:id])).count
  14. @followers_count = Follow.where(target_account: Account.where(domain: params[:id])).count
  15. @reports_count = Report.where(target_account: Account.where(domain: params[:id])).count
  16. @blocks_count = Block.where(target_account: Account.where(domain: params[:id])).count
  17. @available = DeliveryFailureTracker.available?(Account.select(:shared_inbox_url).where(domain: params[:id]).first&.shared_inbox_url)
  18. @media_storage = MediaAttachment.where(account: Account.where(domain: params[:id])).sum(:file_file_size)
  19. end
  20. private
  21. def set_domain_block
  22. @domain_block = DomainBlock.rule_for(params[:id])
  23. end
  24. def set_domain_allow
  25. @domain_allow = DomainAllow.rule_for(params[:id])
  26. end
  27. def set_instance
  28. resource = Account.by_domain_accounts.find_by(domain: params[:id])
  29. resource ||= @domain_block
  30. resource ||= @domain_allow
  31. if resource
  32. @instance = Instance.new(resource)
  33. else
  34. not_found
  35. end
  36. end
  37. def filtered_instances
  38. InstanceFilter.new(whitelist_mode? ? { allowed: true } : filter_params).results
  39. end
  40. def paginated_instances
  41. filtered_instances.page(params[:page])
  42. end
  43. helper_method :paginated_instances
  44. def ordered_instances
  45. paginated_instances.map { |resource| Instance.new(resource) }
  46. end
  47. def filter_params
  48. params.permit(:limited, :by_domain)
  49. end
  50. end
  51. end