diff --git a/app/controllers/admin/reports/actions_controller.rb b/app/controllers/admin/reports/actions_controller.rb index 554f7906f83..54d10ad9173 100644 --- a/app/controllers/admin/reports/actions_controller.rb +++ b/app/controllers/admin/reports/actions_controller.rb @@ -19,6 +19,7 @@ class Admin::Reports::ActionsController < Admin::BaseController current_account: current_account, report_id: @report.id, send_email_notification: !@report.spam?, + send_in_app_notification: !@report.spam?, text: params[:text] ) @@ -30,6 +31,7 @@ class Admin::Reports::ActionsController < Admin::BaseController target_account: @report.target_account, current_account: current_account, send_email_notification: !@report.spam?, + send_in_app_notification: !@report.spam?, text: params[:text] ) diff --git a/app/controllers/api/v1/admin/account_actions_controller.rb b/app/controllers/api/v1/admin/account_actions_controller.rb index 7249797a40b..396f0c992a7 100644 --- a/app/controllers/api/v1/admin/account_actions_controller.rb +++ b/app/controllers/api/v1/admin/account_actions_controller.rb @@ -31,7 +31,8 @@ class Api::V1::Admin::AccountActionsController < Api::BaseController :report_id, :warning_preset_id, :text, - :send_email_notification + :send_email_notification, + :send_in_app_notification ) end end diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb index 7c66b6e6462..8242551b446 100644 --- a/app/models/admin/account_action.rb +++ b/app/models/admin/account_action.rb @@ -20,9 +20,10 @@ class Admin::AccountAction :report_id, :warning_preset_id - attr_reader :warning, :send_email_notification, :include_statuses + attr_reader :warning, :send_email_notification, :send_in_app_notification, :include_statuses alias send_email_notification? send_email_notification + alias send_in_app_notification? send_in_app_notification alias include_statuses? include_statuses validates :type, :target_account, :current_account, presence: true @@ -30,7 +31,8 @@ class Admin::AccountAction def initialize(attributes = {}) @send_email_notification = true - @include_statuses = true + @send_in_app_notification = true + @include_statuses = true super end @@ -39,6 +41,10 @@ class Admin::AccountAction @send_email_notification = ActiveModel::Type::Boolean.new.cast(value) end + def send_in_app_notification=(value) + @send_in_app_notification = ActiveModel::Type::Boolean.new.cast(value) + end + def include_statuses=(value) @include_statuses = ActiveModel::Type::Boolean.new.cast(value) end @@ -167,14 +173,10 @@ class Admin::AccountAction end def process_notification! - return unless warnable? + return unless target_account.local? - UserMailer.warning(target_account.user, warning).deliver_later! - LocalNotificationWorker.perform_async(target_account.id, warning.id, 'AccountWarning', 'moderation_warning') - end - - def warnable? - send_email_notification? && target_account.local? + UserMailer.warning(target_account.user, warning).deliver_later! if send_email_notification? + LocalNotificationWorker.perform_async(target_account.id, warning.id, 'AccountWarning', 'moderation_warning') if send_in_app_notification? end def status_ids diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb index 4a100019351..f8018b4464e 100644 --- a/app/models/admin/status_batch_action.rb +++ b/app/models/admin/status_batch_action.rb @@ -9,12 +9,16 @@ class Admin::StatusBatchAction :status_ids, :report_id, :text - attr_reader :send_email_notification + attr_reader :send_email_notification, :send_in_app_notification def send_email_notification=(value) @send_email_notification = ActiveModel::Type::Boolean.new.cast(value) end + def send_in_app_notification=(value) + @send_in_app_notification = ActiveModel::Type::Boolean.new.cast(value) + end + def save! process_action! end @@ -129,14 +133,10 @@ class Admin::StatusBatchAction end def process_notification! - return unless warnable? + return unless target_account.local? - UserMailer.warning(target_account.user, @warning).deliver_later! - LocalNotificationWorker.perform_async(target_account.id, @warning.id, 'AccountWarning', 'moderation_warning') - end - - def warnable? - send_email_notification && target_account.local? + UserMailer.warning(target_account.user, @warning).deliver_later! if send_email_notification + LocalNotificationWorker.perform_async(target_account.id, @warning.id, 'AccountWarning', 'moderation_warning') if send_in_app_notification end def target_account diff --git a/app/views/admin/account_actions/new.html.haml b/app/views/admin/account_actions/new.html.haml index c4311eba963..f98286d8d58 100644 --- a/app/views/admin/account_actions/new.html.haml +++ b/app/views/admin/account_actions/new.html.haml @@ -30,6 +30,10 @@ as: :boolean, wrapper: :with_label + = f.input :send_in_app_notification, + as: :boolean, + wrapper: :with_label + - if params[:report_id].present? .fields-group = f.input :include_statuses, diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 696ccd35dcb..d45205c062b 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -20,7 +20,8 @@ en: title: Optional. Not visible to the recipient admin_account_action: include_statuses: The user will see which posts have caused the moderation action or warning - send_email_notification: The user will receive an explanation of what happened with their account + send_email_notification: The user will receive an email with an explanation of what happened with their account + send_in_app_notification: The user will receive an in-app notification with an explanation of what happened with their account text_html: Optional. You can use post syntax. You can add warning presets to save time type_html: Choose what to do with %{acct} types: @@ -174,6 +175,7 @@ en: admin_account_action: include_statuses: Include reported posts in the e-mail send_email_notification: Notify the user per e-mail + send_in_app_notification: Notify the user in the application text: Custom warning type: Action types: