Add preference for report notification e-mails, skip for duplicates (#8559)

If an unresolved report for the same target account already exists,
no new notification is generated
This commit is contained in:
Eugen Rochko
2018-09-02 00:11:58 +02:00
committed by GitHub
parent a060beee72
commit c593d6df9c
8 changed files with 36 additions and 2 deletions

View File

@ -46,7 +46,7 @@ class Settings::PreferencesController < ApplicationController
:setting_noindex,
:setting_theme,
:setting_hide_network,
notification_emails: %i(follow follow_request reblog favourite mention digest),
notification_emails: %i(follow follow_request reblog favourite mention digest report),
interactions: %i(must_be_follower must_be_following)
)
end

View File

@ -60,6 +60,10 @@ class Report < ApplicationRecord
!action_taken?
end
def unresolved_siblings?
Report.where.not(id: id).where(target_account_id: target_account_id).unresolved.exists?
end
def history
time_range = created_at..updated_at

View File

@ -224,6 +224,10 @@ class User < ApplicationRecord
settings.notification_emails['digest']
end
def allows_report_emails?
settings.notification_emails['report']
end
def hides_network?
@hides_network ||= settings.hide_network
end

View File

@ -26,7 +26,10 @@ class ReportService < BaseService
end
def notify_staff!
return if @report.unresolved_siblings?
User.staff.includes(:account).each do |u|
next unless u.allows_report_emails?
AdminMailer.new_report(u.account, @report).deliver_later
end
end

View File

@ -12,6 +12,9 @@
= ff.input :favourite, as: :boolean, wrapper: :with_label
= ff.input :mention, as: :boolean, wrapper: :with_label
- if current_user.staff?
= ff.input :report, as: :boolean, wrapper: :with_label
.fields-group
= f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
= ff.input :digest, as: :boolean, wrapper: :with_label