* Wip * Wip * Wip: History * Wip: テストコード作成 * Fix test * Wip * Wip * Wip * Fix test * Wip * Wip * Wip * Wip * なんとか完成、これから動作確認 * spell miss * Change ng rule timings * Fix test * Wip * Fix test * Wip * Fix form * 表示まわりの改善
This commit is contained in:
parent
0779c748a6
commit
7d96d5828e
56 changed files with 2062 additions and 42 deletions
|
@ -4,6 +4,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
include JsonLdHelper
|
||||
include Redisable
|
||||
include Lockable
|
||||
include NgRuleHelper
|
||||
|
||||
class AbortError < ::StandardError; end
|
||||
|
||||
|
@ -168,17 +169,38 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||
end
|
||||
|
||||
def validate_status_mentions!
|
||||
raise AbortError if (mention_to_stranger? || reference_to_stranger?) && Admin::NgWord.stranger_mention_reject?("#{@status_parser.spoiler_text}\n#{@status_parser.text}", uri: @status.uri, target_type: :status)
|
||||
raise AbortError unless valid_status_for_ng_rule?
|
||||
raise AbortError if (mention_to_local_stranger? || reference_to_local_stranger?) && Admin::NgWord.stranger_mention_reject?("#{@status_parser.spoiler_text}\n#{@status_parser.text}", uri: @status.uri, target_type: :status)
|
||||
raise AbortError if Admin::NgWord.mention_reject?(@raw_mentions.size, uri: @status.uri, target_type: :status, text: "#{@status_parser.spoiler_text}\n#{@status_parser.text}")
|
||||
raise AbortError if (mention_to_stranger? || reference_to_stranger?) && Admin::NgWord.stranger_mention_reject_with_count?(@raw_mentions.size, uri: @status.uri, target_type: :status, text: "#{@status_parser.spoiler_text}\n#{@status_parser.text}")
|
||||
raise AbortError if (mention_to_local_stranger? || reference_to_local_stranger?) && Admin::NgWord.stranger_mention_reject_with_count?(@raw_mentions.size, uri: @status.uri, target_type: :status, text: "#{@status_parser.spoiler_text}\n#{@status_parser.text}")
|
||||
end
|
||||
|
||||
def mention_to_stranger?
|
||||
def valid_status_for_ng_rule?
|
||||
check_invalid_status_for_ng_rule! @account,
|
||||
reaction_type: 'edit',
|
||||
uri: @status.uri,
|
||||
url: @status_parser.url || @status.url,
|
||||
spoiler_text: @status.spoiler_text,
|
||||
text: @status.text,
|
||||
tag_names: @raw_tags,
|
||||
visibility: @status.visibility,
|
||||
searchability: @status.searchability,
|
||||
sensitive: @status.sensitive,
|
||||
media_count: @next_media_attachments.size,
|
||||
poll_count: @status.poll&.options&.size || 0,
|
||||
quote: quote,
|
||||
reply: @status.reply?,
|
||||
mention_count: @status.mentions.count,
|
||||
reference_count: reference_uris.size,
|
||||
mention_to_following: !(mention_to_local_stranger? || reference_to_local_stranger?)
|
||||
end
|
||||
|
||||
def mention_to_local_stranger?
|
||||
@status.mentions.map(&:account).to_a.any? { |mentioned_account| mentioned_account.id != @status.account.id && mentioned_account.local? && !mentioned_account.following?(@status.account) } ||
|
||||
(@status.thread.present? && @status.thread.account.id != @status.account.id && @status.thread.account.local? && !@status.thread.account.following?(@status.account))
|
||||
end
|
||||
|
||||
def reference_to_stranger?
|
||||
def reference_to_local_stranger?
|
||||
local_referred_accounts.any? { |account| !account.following?(@account) }
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue