mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-03-29 00:00:33 -04:00
Merge pull request #1847 from nickborromeo/refactor-user-updater
Change user update to use #fetch for defaults
This commit is contained in:
commit
5a3c77abd9
1 changed files with 30 additions and 27 deletions
|
@ -1,27 +1,33 @@
|
|||
class UserUpdater
|
||||
|
||||
CATEGORY_IDS = {
|
||||
watched_category_ids: :watching,
|
||||
tracked_category_ids: :tracking,
|
||||
muted_category_ids: :muted
|
||||
}
|
||||
|
||||
USER_ATTR = [
|
||||
:email_digests,
|
||||
:email_always,
|
||||
:email_direct,
|
||||
:email_private_messages,
|
||||
:external_links_in_new_tab,
|
||||
:enable_quoting,
|
||||
:dynamic_favicon,
|
||||
:watch_new_topics
|
||||
]
|
||||
|
||||
def initialize(actor, user)
|
||||
@user = user
|
||||
@guardian = Guardian.new(actor)
|
||||
end
|
||||
|
||||
def update(attributes = {})
|
||||
user.website = format_url(attributes[:website]) || user.website
|
||||
user.website = format_url(attributes.fetch(:website) { user.website })
|
||||
|
||||
user.bio_raw = attributes[:bio_raw] || user.bio_raw
|
||||
user.name = attributes[:name] || user.name
|
||||
user.digest_after_days = attributes[:digest_after_days] || user.digest_after_days
|
||||
|
||||
if ids = attributes[:watched_category_ids]
|
||||
CategoryUser.batch_set(user, :watching, ids)
|
||||
end
|
||||
|
||||
if ids = attributes[:tracked_category_ids]
|
||||
CategoryUser.batch_set(user, :tracking, ids)
|
||||
end
|
||||
|
||||
if ids = attributes[:muted_category_ids]
|
||||
CategoryUser.batch_set(user, :muted, ids)
|
||||
end
|
||||
user.bio_raw = attributes.fetch(:bio_raw) { user.bio_raw }
|
||||
user.name = attributes.fetch(:name) { user.name }
|
||||
user.digest_after_days = attributes.fetch(:digest_after_days) { user.digest_after_days }
|
||||
|
||||
if attributes[:auto_track_topics_after_msecs]
|
||||
user.auto_track_topics_after_msecs = attributes[:auto_track_topics_after_msecs].to_i
|
||||
|
@ -32,19 +38,16 @@ class UserUpdater
|
|||
end
|
||||
|
||||
if guardian.can_grant_title?(user)
|
||||
user.title = attributes[:title] || user.title
|
||||
user.title = attributes.fetch(:title) { user.title }
|
||||
end
|
||||
|
||||
[
|
||||
:email_digests,
|
||||
:email_always,
|
||||
:email_direct,
|
||||
:email_private_messages,
|
||||
:external_links_in_new_tab,
|
||||
:enable_quoting,
|
||||
:dynamic_favicon,
|
||||
:watch_new_topics
|
||||
].each do |attribute|
|
||||
CATEGORY_IDS.each do |attribute, level|
|
||||
if ids = attributes[attribute]
|
||||
CategoryUser.batch_set(user, level, ids)
|
||||
end
|
||||
end
|
||||
|
||||
USER_ATTR.each do |attribute|
|
||||
if attributes[attribute].present?
|
||||
user.send("#{attribute.to_s}=", attributes[attribute] == 'true')
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue