diff --git a/app/services/concerns/author_extractor.rb b/app/services/concerns/author_extractor.rb index 71bd32f376..ae32eebbb5 100644 --- a/app/services/concerns/author_extractor.rb +++ b/app/services/concerns/author_extractor.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true module AuthorExtractor - def author_from_xml(xml) + def author_from_xml(xml, update_profile = true) return nil if xml.nil? # Try for acct @@ -18,6 +18,6 @@ module AuthorExtractor acct = "#{username}@#{domain}" end - FollowRemoteAccountService.new.call(acct) + FollowRemoteAccountService.new.call(acct, update_profile) end end diff --git a/app/services/fetch_remote_account_service.rb b/app/services/fetch_remote_account_service.rb index 98fdf3dfe9..8eed0d4542 100644 --- a/app/services/fetch_remote_account_service.rb +++ b/app/services/fetch_remote_account_service.rb @@ -21,7 +21,7 @@ class FetchRemoteAccountService < BaseService xml = Nokogiri::XML(body) xml.encoding = 'utf-8' - account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS)) + account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS), false) UpdateRemoteProfileService.new.call(xml, account) unless account.nil? diff --git a/app/services/follow_remote_account_service.rb b/app/services/follow_remote_account_service.rb index 8558e6d022..30ba7bc75a 100644 --- a/app/services/follow_remote_account_service.rb +++ b/app/services/follow_remote_account_service.rb @@ -11,7 +11,7 @@ class FollowRemoteAccountService < BaseService # important information from their feed # @param [String] uri User URI in the form of username@domain # @return [Account] - def call(uri, redirected = nil) + def call(uri, update_profile = true, redirected = nil) username, domain = uri.split('@') return Account.find_local(username) if TagManager.instance.local_domain?(domain) @@ -29,7 +29,7 @@ class FollowRemoteAccountService < BaseService confirmed_username, confirmed_domain = data.subject.gsub(/\Aacct:/, '').split('@') unless confirmed_username.casecmp(username).zero? && confirmed_domain.casecmp(domain).zero? - return call("#{confirmed_username}@#{confirmed_domain}", true) if redirected.nil? + return call("#{confirmed_username}@#{confirmed_domain}", update_profile, true) if redirected.nil? raise Goldfinger::Error, 'Requested and returned acct URI do not match' end @@ -63,7 +63,7 @@ class FollowRemoteAccountService < BaseService begin account.save! - get_profile(body, account) + get_profile(body, account) if update_profile rescue ActiveRecord::RecordNotUnique # The account has been added by another worker! return Account.find_remote(confirmed_username, confirmed_domain)