From 80a81fe223415525811c0c3ef62b8853624e9a6a Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Wed, 31 Jul 2019 01:25:10 -0500 Subject: ability to add domain moderation notes, edit existing domain policies in-place, and process asynchronously --- app/helpers/admin/action_logs_helper.rb | 4 ++-- app/helpers/bangtag_helper.rb | 17 +++++++++++++---- app/helpers/log_helper.rb | 6 ++++-- 3 files changed, 19 insertions(+), 8 deletions(-) (limited to 'app/helpers') diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index 93ce447a1..427ac0c4e 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -87,7 +87,7 @@ module Admin::ActionLogsHelper when 'Report' link_to "##{record.id}", admin_report_path(record) when 'DomainBlock', 'EmailDomainBlock' - link_to record.domain, "https://#{record.domain}" + link_to record.domain, admin_instance_path(id: record.domain) when 'Status' link_to record.account.acct, TagManager.instance.url_for(record) when 'AccountWarning' @@ -100,7 +100,7 @@ module Admin::ActionLogsHelper when 'CustomEmoji' attributes['shortcode'] when 'DomainBlock', 'EmailDomainBlock' - link_to attributes['domain'], "https://#{attributes['domain']}" + link_to attributes['domain'], admin_instance_path(id: attributes['domain']) when 'Status' tmp_status = Status.new(attributes.except('reblogs_count', 'favourites_count')) diff --git a/app/helpers/bangtag_helper.rb b/app/helpers/bangtag_helper.rb index 1ace17f85..248f26113 100644 --- a/app/helpers/bangtag_helper.rb +++ b/app/helpers/bangtag_helper.rb @@ -4,7 +4,7 @@ module BangtagHelper POLICIES = %w(silence unsilence suspend unsuspend force_unlisted allow_public force_sensitive allow_nonsensitive reset) EXCLUDED_DOMAINS = %w(tailma.ws monsterpit.net monsterpit.cloud monsterpit.gallery monsterpit.blog) - def account_policy(username, domain = nil, policy) + def account_policy(username, domain, policy, reason = nil) return if policy.blank? policy = policy.to_s return false unless policy.in?(POLICIES) @@ -50,6 +50,14 @@ module BangtagHelper acct.save + return true unless reason && !reason.strip.blank? + + AccountModerationNote.create( + account_id: @account.id, + target_account_id: acct.id, + content: reason.strip + ) + true end @@ -63,7 +71,7 @@ module BangtagHelper true end - def domain_policy(domain, policy, force_sensitive = false, reject_media = false, reject_reports = false) + def domain_policy(domain, policy, reason = nil, force_sensitive = false, reject_media = false, reject_reports = false) return if policy.blank? policy = policy.to_s return false unless policy.in?(POLICIES) @@ -86,18 +94,19 @@ module BangtagHelper domain_block.force_sensitive = force_sensitive domain_block.reject_media = reject_media domain_block.reject_reports = reject_reports + domain_block.reason = reason.strip if reason && !reason.strip.blank? domain_block.save Admin::ActionLog.create(account: @account, action: :create, target: domain_block) user_friendly_action_log(@account, :create, domain_block) - BlockDomainService.new.call(domain_block) + DomainBlockWorker.perform_async(domain_block.id) else domain_block = DomainBlock.find_by(domain: domain) return false if domain_block.nil? Admin::ActionLog.create(account: @account, action: :destroy, target: domain_block) user_friendly_action_log(@account, :destroy, domain_block) - UnblockDomainService.new.call(domain_block) + DomainUnblockWorker.perform_async(domain_block.id) end true diff --git a/app/helpers/log_helper.rb b/app/helpers/log_helper.rb index f042dc19f..038a4cbbd 100644 --- a/app/helpers/log_helper.rb +++ b/app/helpers/log_helper.rb @@ -7,7 +7,7 @@ module LogHelper case action when :create if target.is_a? DomainBlock - LogWorker.perform_async("\xf0\x9f\x9a\xab <#{source}> applied a #{target.severity}#{target.force_sensitive? ? " and force sensitive media" : ''}#{target.reject_media? ? " and reject media" : ''} policy on https://#{target.domain}\u200b.", LOG_SCOPE_MODERATION) + LogWorker.perform_async("\xf0\x9f\x9a\xab <#{source}> applied a #{target.severity}#{target.force_sensitive? ? " and force sensitive media" : ''}#{target.reject_media? ? " and reject media" : ''} policy on https://#{target.domain}\u200b.\n\n#{target.reason? ? "Comment: #{target.reason}" : ''}", LOG_SCOPE_MODERATION) elsif target.is_a? EmailDomainBlock LogWorker.perform_async("\u26d4 <#{source}> added a registration block on email domain '#{target.domain}'.", LOG_SCOPE_MODERATION) elsif target.is_a? CustomEmoji @@ -27,7 +27,9 @@ module LogHelper end when :update - if target.is_a? Status + if target.is_a? DomainBlock + LogWorker.perform_async("\xf0\x9f\x9a\xab <#{source}> changed the policy on https://#{target.domain} to #{target.severity}#{target.force_sensitive? ? " and force sensitive media" : ''}#{target.reject_media? ? " and reject media" : ''}.\n\n#{target.reason? ? "Comment: #{target.reason}" : ''}", LOG_SCOPE_MODERATION) + elsif target.is_a? Status LogWorker.perform_async("\xf0\x9f\x91\x81\xef\xb8\x8f <#{source}> changed visibility flags of post #{TagManager.instance.url_for(target)}\u200b.", LOG_SCOPE_MODERATION) elsif target.is_a? CustomEmoji LogWorker.perform_async("\xf0\x9f\x94\x81 <#{source}> replaced the '#{target.shortcode}' emoji. :#{target.shortcode}:", LOG_SCOPE_MODERATION) -- cgit