Merge branch 'main' into glitch-soc/merge-upstream

This commit is contained in:
Claire
2022-03-02 18:02:48 +01:00
189 changed files with 2586 additions and 1444 deletions

View File

@@ -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 || [])

View File

@@ -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

View File

@@ -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