0
0
Fork 0

Ignore error if mentioned account was not processable (#29215)

Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
Jeong Arm 2024-10-02 17:08:02 +09:00 committed by GitHub
parent f91f077985
commit 66b2bc1c84
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 122 additions and 0 deletions

View file

@ -42,6 +42,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def process_status
@tags = []
@mentions = []
@unresolved_mentions = []
@silenced_account_ids = []
@params = {}
@ -55,6 +56,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
resolve_thread(@status)
resolve_unresolved_mentions(@status)
fetch_replies(@status)
distribute
forward_for_reply
@ -197,6 +199,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return if account.nil?
@mentions << Mention.new(account: account, silent: false)
rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError
@unresolved_mentions << tag['href']
end
def process_emoji(tag)
@ -301,6 +305,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
ThreadResolveWorker.perform_async(status.id, in_reply_to_uri, { 'request_id' => @options[:request_id] })
end
def resolve_unresolved_mentions(status)
@unresolved_mentions.uniq.each do |uri|
MentionResolveWorker.perform_in(rand(30...600).seconds, status.id, uri, { 'request_id' => @options[:request_id] })
end
end
def fetch_replies(status)
collection = @object['replies']
return if collection.blank?