: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
!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
settings.notification_emails['digest']
end
+ def allows_report_emails?
+ settings.notification_emails['report']
+ end
+
def hides_network?
@hides_network ||= settings.hide_network
end
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
= 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
follow_request: Send e-mail when someone requests to follow you
mention: Send e-mail when someone mentions you
reblog: Send e-mail when someone boosts your status
+ report: Send e-mail when a new report is submitted
'no': 'No'
required:
mark: "*"
mention: false
follow_request: true
digest: true
+ report: true
interactions:
must_be_follower: false
must_be_following: false
RSpec.describe ReportService, type: :service do
subject { described_class.new }
- let(:source_account) { Fabricate(:account) }
+ let(:source_account) { Fabricate(:user).account }
context 'for a remote account' do
let(:remote_account) { Fabricate(:account, domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox') }
expect(a_request(:post, 'http://example.com/inbox')).to_not have_been_made
end
end
+
+ context 'when other reports already exist for the same target' do
+ let!(:target_account) { Fabricate(:account) }
+ let!(:other_report) { Fabricate(:report, target_account: target_account) }
+
+ subject do
+ -> { described_class.new.call(source_account, target_account) }
+ end
+
+ before do
+ ActionMailer::Base.deliveries.clear
+ source_account.user.settings.notification_emails['report'] = true
+ end
+
+ it 'does not send an e-mail' do
+ is_expected.to_not change(ActionMailer::Base.deliveries, :count).from(0)
+ end
+ end
end