diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-02-11 21:51:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-11 21:51:57 +0100 |
commit | d0fcf07436d158bcac2617d076a83d0aa49c39e6 (patch) | |
tree | 4a1c3737e029ad9bb9f976c15e3e66d86dfca47f /app/controllers | |
parent | a27729ee48aab4d75d562c2007b9967333c65d29 (diff) |
Change actions in reports to require only one click (#17487)
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/admin/reports/actions_controller.rb | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/app/controllers/admin/reports/actions_controller.rb b/app/controllers/admin/reports/actions_controller.rb new file mode 100644 index 000000000..05a4fb63d --- /dev/null +++ b/app/controllers/admin/reports/actions_controller.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +class Admin::Reports::ActionsController < Admin::BaseController + before_action :set_report + + def create + authorize @report, :show? + + case action_from_button + when 'delete' + status_batch_action = Admin::StatusBatchAction.new( + type: action_from_button, + status_ids: @report.status_ids, + current_account: current_account, + report_id: @report.id, + send_email_notification: !@report.spam? + ) + + status_batch_action.save! + when 'silence', 'suspend' + account_action = Admin::AccountAction.new( + type: action_from_button, + report_id: @report.id, + target_account: @report.target_account, + current_account: current_account, + send_email_notification: !@report.spam? + ) + + account_action.save! + end + + redirect_to admin_reports_path + end + + private + + def set_report + @report = Report.find(params[:report_id]) + end + + def action_from_button + if params[:delete] + 'delete' + elsif params[:silence] + 'silence' + elsif params[:suspend] + 'suspend' + end + end +end |