Class: UsernameChanger
- Inherits:
-
Object
- Object
- UsernameChanger
- Defined in:
- app/services/username_changer.rb
Class Method Summary collapse
- .change(user, new_username, actor = nil) ⇒ Object
- .override(user, new_username) ⇒ Object
- .update_username(user_id:, old_username:, new_username:, avatar_template:, asynchronous: true) ⇒ Object
Instance Method Summary collapse
- #change(asynchronous: true, run_update_job: true) ⇒ Object
-
#initialize(user, new_username, actor = nil) ⇒ UsernameChanger
constructor
A new instance of UsernameChanger.
Constructor Details
#initialize(user, new_username, actor = nil) ⇒ UsernameChanger
Returns a new instance of UsernameChanger.
4 5 6 7 8 9 |
# File 'app/services/username_changer.rb', line 4 def initialize(user, new_username, actor = nil) @user = user @old_username = user.username @new_username = new_username @actor = actor end |
Class Method Details
.change(user, new_username, actor = nil) ⇒ Object
11 12 13 |
# File 'app/services/username_changer.rb', line 11 def self.change(user, new_username, actor = nil) self.new(user, new_username, actor).change end |
.override(user, new_username) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/services/username_changer.rb', line 15 def self.override(user, new_username) if user.username_equals_to?(new_username) # override anyway since case could've been changed: UsernameChanger.change(user, new_username, user) true elsif user.username != UserNameSuggester.fix_username(new_username) suggested_username = UserNameSuggester.suggest(new_username, current_username: user.username) UsernameChanger.change(user, suggested_username, user) true else false end end |
.update_username(user_id:, old_username:, new_username:, avatar_template:, asynchronous: true) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/services/username_changer.rb', line 54 def self.update_username( user_id:, old_username:, new_username:, avatar_template:, asynchronous: true ) args = { user_id: user_id, old_username: old_username, new_username: new_username, avatar_template: avatar_template, } if asynchronous Jobs.enqueue(:update_username, args) else Jobs::UpdateUsername.new.execute(args) end end |
Instance Method Details
#change(asynchronous: true, run_update_job: true) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/services/username_changer.rb', line 29 def change(asynchronous: true, run_update_job: true) return false if @user.username == @new_username @user.username = @new_username if @user.save if @actor && @old_username != @new_username StaffActionLogger.new(@actor).log_username_change(@user, @old_username, @new_username) end if run_update_job UsernameChanger.update_username( user_id: @user.id, old_username: @old_username, new_username: @new_username, avatar_template: @user.avatar_template_url, asynchronous: asynchronous, ) end return true end false end |