Reduce the number of synchronous resolves when posting toots (#6075)
This commit is contained in:
		| @ -11,18 +11,20 @@ class ProcessMentionsService < BaseService | ||||
|     return unless status.local? | ||||
|  | ||||
|     status.text = status.text.gsub(Account::MENTION_RE) do |match| | ||||
|       begin | ||||
|         mentioned_account = resolve_remote_account_service.call($1) | ||||
|       rescue Goldfinger::Error, HTTP::Error | ||||
|         mentioned_account = nil | ||||
|       username, domain  = $1.split('@') | ||||
|       mentioned_account = Account.find_remote(username, domain) | ||||
|  | ||||
|       if mention_undeliverable?(status, mentioned_account) | ||||
|         begin | ||||
|           mentioned_account = resolve_remote_account_service.call($1) | ||||
|         rescue Goldfinger::Error, HTTP::Error | ||||
|           mentioned_account = nil | ||||
|         end | ||||
|       end | ||||
|  | ||||
|       if mentioned_account.nil? | ||||
|         username, domain  = $1.split('@') | ||||
|         mentioned_account = Account.find_remote(username, domain) | ||||
|       end | ||||
|       mentioned_account ||= Account.find_remote(username, domain) | ||||
|  | ||||
|       next match if mentioned_account.nil? || (!mentioned_account.local? && mentioned_account.ostatus? && status.stream_entry.hidden?) | ||||
|       next match if mention_undeliverable?(status, mentioned_account) | ||||
|  | ||||
|       mentioned_account.mentions.where(status: status).first_or_create(status: status) | ||||
|       "@#{mentioned_account.acct}" | ||||
| @ -37,6 +39,10 @@ class ProcessMentionsService < BaseService | ||||
|  | ||||
|   private | ||||
|  | ||||
|   def mention_undeliverable?(status, mentioned_account) | ||||
|     mentioned_account.nil? || (!mentioned_account.local? && mentioned_account.ostatus? && status.stream_entry.hidden?) | ||||
|   end | ||||
|  | ||||
|   def create_notification(status, mention) | ||||
|     mentioned_account = mention.account | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user