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: