Change design of federation pages in admin UI (#17704)
* Change design of federation pages in admin UI * Fix query performance in instance media attachments measure * Fix reblogs being included in instance languages dimension
This commit is contained in:
parent
318d34d528
commit
bd53dd5210
32 changed files with 712 additions and 235 deletions
|
@ -30,6 +30,14 @@ class DomainBlock < ApplicationRecord
|
|||
scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) }
|
||||
scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), reject_media, domain')) }
|
||||
|
||||
def policies
|
||||
if suspend?
|
||||
:suspend
|
||||
else
|
||||
[severity.to_sym, reject_media? ? :reject_media : nil, reject_reports? ? :reject_reports : nil].reject { |policy| policy == :noop || policy.nil? }
|
||||
end
|
||||
end
|
||||
|
||||
class << self
|
||||
def suspend?(domain)
|
||||
!!rule_for(domain)&.suspend?
|
||||
|
|
|
@ -32,35 +32,27 @@ class Instance < ApplicationRecord
|
|||
@delivery_failure_tracker ||= DeliveryFailureTracker.new(domain)
|
||||
end
|
||||
|
||||
def following_count
|
||||
@following_count ||= Follow.where(account: accounts).count
|
||||
def unavailable?
|
||||
unavailable_domain.present?
|
||||
end
|
||||
|
||||
def followers_count
|
||||
@followers_count ||= Follow.where(target_account: accounts).count
|
||||
end
|
||||
|
||||
def reports_count
|
||||
@reports_count ||= Report.where(target_account: accounts).count
|
||||
end
|
||||
|
||||
def blocks_count
|
||||
@blocks_count ||= Block.where(target_account: accounts).count
|
||||
end
|
||||
|
||||
def public_comment
|
||||
domain_block&.public_comment
|
||||
end
|
||||
|
||||
def private_comment
|
||||
domain_block&.private_comment
|
||||
end
|
||||
|
||||
def media_storage
|
||||
@media_storage ||= MediaAttachment.where(account: accounts).sum(:file_file_size)
|
||||
def failing?
|
||||
failure_days.present? || unavailable?
|
||||
end
|
||||
|
||||
def to_param
|
||||
domain
|
||||
end
|
||||
|
||||
delegate :exhausted_deliveries_days, to: :delivery_failure_tracker
|
||||
|
||||
def availability_over_days(num_days, end_date = Time.now.utc.to_date)
|
||||
failures_map = exhausted_deliveries_days.index_with { true }
|
||||
period_end_at = exhausted_deliveries_days.last || end_date
|
||||
period_start_at = period_end_at - num_days.days
|
||||
|
||||
(period_start_at..period_end_at).map do |date|
|
||||
[date, failures_map[date]]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,8 +4,7 @@ class InstanceFilter
|
|||
KEYS = %i(
|
||||
limited
|
||||
by_domain
|
||||
warning
|
||||
unavailable
|
||||
availability
|
||||
).freeze
|
||||
|
||||
attr_reader :params
|
||||
|
@ -34,12 +33,21 @@ class InstanceFilter
|
|||
Instance.joins(:domain_allow).reorder(Arel.sql('domain_allows.id desc'))
|
||||
when 'by_domain'
|
||||
Instance.matches_domain(value)
|
||||
when 'warning'
|
||||
Instance.where(domain: DeliveryFailureTracker.warning_domains)
|
||||
when 'unavailable'
|
||||
Instance.joins(:unavailable_domain)
|
||||
when 'availability'
|
||||
availability_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
def availability_scope(value)
|
||||
case value
|
||||
when 'failing'
|
||||
Instance.where(domain: DeliveryFailureTracker.warning_domains)
|
||||
when 'unavailable'
|
||||
Instance.joins(:unavailable_domain)
|
||||
else
|
||||
raise "Unknown availability: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue