Merge branch 'main' into glitch-soc/merge-upstream
This commit is contained in:
@@ -17,12 +17,13 @@
|
||||
|
||||
class AccountWarning < ApplicationRecord
|
||||
enum action: {
|
||||
none: 0,
|
||||
disable: 1_000,
|
||||
delete_statuses: 1_500,
|
||||
sensitive: 2_000,
|
||||
silence: 3_000,
|
||||
suspend: 4_000,
|
||||
none: 0,
|
||||
disable: 1_000,
|
||||
mark_statuses_as_sensitive: 1_250,
|
||||
delete_statuses: 1_500,
|
||||
sensitive: 2_000,
|
||||
silence: 3_000,
|
||||
suspend: 4_000,
|
||||
}, _suffix: :action
|
||||
|
||||
belongs_to :account, inverse_of: :account_warnings
|
||||
@@ -33,7 +34,7 @@ class AccountWarning < ApplicationRecord
|
||||
|
||||
scope :latest, -> { order(id: :desc) }
|
||||
scope :custom, -> { where.not(text: '') }
|
||||
scope :active, -> { where(overruled_at: nil).or(where('account_warnings.overruled_at >= ?', 30.days.ago)) }
|
||||
scope :recent, -> { where('account_warnings.created_at >= ?', 3.months.ago) }
|
||||
|
||||
def statuses
|
||||
Status.with_discarded.where(id: status_ids || [])
|
||||
|
@@ -30,6 +30,8 @@ class Admin::StatusBatchAction
|
||||
case type
|
||||
when 'delete'
|
||||
handle_delete!
|
||||
when 'mark_as_sensitive'
|
||||
handle_mark_as_sensitive!
|
||||
when 'report'
|
||||
handle_report!
|
||||
when 'remove_from_report'
|
||||
@@ -65,6 +67,38 @@ class Admin::StatusBatchAction
|
||||
RemovalWorker.push_bulk(status_ids) { |status_id| [status_id, { 'preserve' => target_account.local?, 'immediate' => !target_account.local? }] }
|
||||
end
|
||||
|
||||
def handle_mark_as_sensitive!
|
||||
# Can't use a transaction here because UpdateStatusService queues
|
||||
# Sidekiq jobs
|
||||
statuses.includes(:media_attachments, :preview_cards).find_each do |status|
|
||||
next unless status.with_media? || status.with_preview_card?
|
||||
|
||||
authorize(status, :update?)
|
||||
|
||||
if target_account.local?
|
||||
UpdateStatusService.new.call(status, current_account.id, sensitive: true)
|
||||
else
|
||||
status.update(sensitive: true)
|
||||
end
|
||||
|
||||
log_action(:update, status)
|
||||
|
||||
if with_report?
|
||||
report.resolve!(current_account)
|
||||
log_action(:resolve, report)
|
||||
end
|
||||
|
||||
@warning = target_account.strikes.create!(
|
||||
action: :mark_statuses_as_sensitive,
|
||||
account: current_account,
|
||||
report: report,
|
||||
status_ids: status_ids
|
||||
)
|
||||
end
|
||||
|
||||
UserMailer.warning(target_account.user, @warning).deliver_later! if warnable?
|
||||
end
|
||||
|
||||
def handle_report!
|
||||
@report = Report.new(report_params) unless with_report?
|
||||
@report.status_ids = (@report.status_ids + status_ids.map(&:to_i)).uniq
|
||||
|
@@ -238,6 +238,10 @@ class Status < ApplicationRecord
|
||||
media_attachments.any?
|
||||
end
|
||||
|
||||
def with_preview_card?
|
||||
preview_cards.any?
|
||||
end
|
||||
|
||||
def non_sensitive_with_media?
|
||||
!sensitive? && with_media?
|
||||
end
|
||||
|
Reference in New Issue
Block a user