FIX: Transaction in UserAnonymizer prevented avatar from updating

This commit is contained in:
Gerhard Schlager 2018-05-14 17:13:25 +02:00
parent 9947c38e1c
commit 2e1b5bc8d3
4 changed files with 10 additions and 8 deletions

View File

@ -5,6 +5,7 @@ module Jobs
@user_id = args[:user_id]
@old_username = args[:old_username]
@new_username = args[:new_username]
@avatar_img = PrettyText.avatar_img(args[:avatar_template], "tiny")
@raw_mention_regex = /(?:(?<![\w`_])|(?<=_))@#{@old_username}(?:(?![\w\-\.])|(?=[\-\.](?:\s|$)))/i
@raw_quote_regex = /(\[quote\s*=\s*["'']?)#{@old_username}(\,?[^\]]*\])/i
@ -131,14 +132,10 @@ module Jobs
div.children.each do |child|
child.content = child.content.gsub(@cooked_quote_username_regex, @new_username) if child.text?
end
div.at_css("img.avatar")&.replace(avatar_img)
div.at_css("img.avatar")&.replace(@avatar_img)
end
doc.to_html
end
def avatar_img
@avatar_img ||= PrettyText.avatar_img(User.find_by_id(@user_id).avatar_template, "tiny")
end
end
end

View File

@ -26,7 +26,8 @@ class UserMerger
def update_username
Jobs::UpdateUsername.new.execute(user_id: @source_user.id,
old_username: @source_user.username,
new_username: @target_user.username)
new_username: @target_user.username,
avatar_template: @target_user.avatar_template)
end
def move_posts

View File

@ -24,7 +24,8 @@ class UsernameChanger
args = {
user_id: @user.id,
old_username: @old_username,
new_username: @new_username
new_username: @new_username,
avatar_template: @user.avatar_template
}
if asynchronous

View File

@ -1009,7 +1009,10 @@ describe UserMerger do
it "updates the username" do
Jobs::UpdateUsername.any_instance
.expects(:execute)
.with(user_id: source_user.id, old_username: 'alice1', new_username: 'alice')
.with(user_id: source_user.id,
old_username: 'alice1',
new_username: 'alice',
avatar_template: target_user.avatar_template)
.once
merge_users!