diff --git a/app/models/account.rb b/app/models/account.rb index 2bf00b2be5..6f5c77b338 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -82,6 +82,7 @@ class Account < ApplicationRecord include Account::Interactions include Account::Merging include Account::Search + include Account::Silences include Account::StatusesSearch include DomainMaterializable include DomainNormalizable @@ -116,11 +117,9 @@ class Account < ApplicationRecord scope :remote, -> { where.not(domain: nil) } scope :local, -> { where(domain: nil) } scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) } - scope :silenced, -> { where.not(silenced_at: nil) } scope :suspended, -> { where.not(suspended_at: nil) } scope :sensitized, -> { where.not(sensitized_at: nil) } scope :without_suspended, -> { where(suspended_at: nil) } - scope :without_silenced, -> { where(silenced_at: nil) } scope :without_instance_actor, -> { where.not(id: INSTANCE_ACTOR_ID) } scope :recent, -> { reorder(id: :desc) } scope :bots, -> { where(actor_type: %w(Application Service)) } @@ -229,18 +228,6 @@ class Account < ApplicationRecord ResolveAccountService.new.call(acct) unless local? end - def silenced? - silenced_at.present? - end - - def silence!(date = Time.now.utc) - update!(silenced_at: date) - end - - def unsilence! - update!(silenced_at: nil) - end - def suspended? suspended_at.present? && !instance_actor? end diff --git a/app/models/concerns/account/silences.rb b/app/models/concerns/account/silences.rb new file mode 100644 index 0000000000..bd785df311 --- /dev/null +++ b/app/models/concerns/account/silences.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module Account::Silences + extend ActiveSupport::Concern + + included do + scope :silenced, -> { where.not(silenced_at: nil) } + scope :without_silenced, -> { where(silenced_at: nil) } + end + + def silenced? + silenced_at.present? + end + + def silence!(date = Time.now.utc) + update!(silenced_at: date) + end + + def unsilence! + update!(silenced_at: nil) + end +end