diff options
author | Claire <claire.github-309c@sitedethib.com> | 2022-03-02 19:11:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-02 19:11:17 +0100 |
commit | d9e30efa5ecc87bc9be7b2e28baaf34bd01032f5 (patch) | |
tree | a2bb52cd8418feb062b908dfaf98d00a3c0ccbbe /app/models/admin | |
parent | 0b8fe020b599341d78cc03431eb156485c70ebea (diff) | |
parent | 78781793d5ab370829d7eaee4b8d21994f84763c (diff) |
Merge pull request #1709 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/models/admin')
-rw-r--r-- | app/models/admin/status_batch_action.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 40f60f379..4d91b9805 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -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 |