From 7724b202197f05cf379842b8640b5e2581a7f1ac Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento <rodrigoknascimento@gmail.com> Date: Wed, 16 Sep 2015 14:34:32 -0300 Subject: [PATCH] Replace all Meteor.users.update --- .../rocketchat-lib/server/models/Users.coffee | 90 +++++++++++++++++++ server/configuration/accounts_meld.coffee | 9 +- server/methods/eraseRoom.coffee | 4 - server/methods/registerUser.coffee | 4 +- server/methods/resetAvatar.coffee | 2 +- server/methods/saveUserPreferences.coffee | 2 +- server/methods/saveUserProfile.coffee | 4 +- server/methods/setAvatarFromService.coffee | 4 +- server/methods/setUserActiveStatus.coffee | 4 +- server/methods/updateUserUtcOffset.coffee | 2 +- server/startup/migrations/v1.coffee | 2 +- server/startup/migrations/v13.coffee | 4 +- server/startup/migrations/v2.coffee | 2 +- server/startup/migrations/v5.coffee | 2 +- 14 files changed, 106 insertions(+), 29 deletions(-) diff --git a/packages/rocketchat-lib/server/models/Users.coffee b/packages/rocketchat-lib/server/models/Users.coffee index ce41313a357..284a6e67dea 100644 --- a/packages/rocketchat-lib/server/models/Users.coffee +++ b/packages/rocketchat-lib/server/models/Users.coffee @@ -82,3 +82,93 @@ RocketChat.models.Users = new class asd extends RocketChat.models._Base lastLogin: new Date return @update _id, update + + setServiceId: (_id, serviceName, serviceId) -> + update = + $set: {} + + serviceIdKey = "services.#{serviceName}.id" + update.$set[serviceIdKey] = serviceData.id + + return @update _id, update + + setUsername: (_id, username) -> + update = + $set: username: username + + return @update _id, update + + setName: (_id, name) -> + update = + $set: + name: name + + return @update _id, update + + setAvatarOrigin: (_id, origin) -> + update = + $set: + avatarOrigin: origin + + return @update _id, update + + unsetAvatarOrigin: (_id) -> + update = + $unset: + avatarOrigin: 1 + + return @update _id, update + + setUserActive: (_id, active=true) -> + update = + $set: + active: active + + return @update _id, update + + setAllUsersActive: (active) -> + update = + $set: + active: active + + return @update {}, update, { multi: true } + + unsetLoginTokens: (_id) -> + update = + $set: + "services.resume.loginTokens" : [] + + return @update _id, update + + setLanguage: (_id, language) -> + update = + $set: + language: language + + return @update _id, update + + setProfile: (_id, profile) -> + update = + $set: + "settings.profile": profile + + return @update _id, update + + setPreferences: (_id, preferences) -> + update = + $set: + "settings.preferences": preferences + + return @update _id, update + + setUtcOffset: (_id, utcOffset) -> + query = + _id: _id + utcOffset: + $ne: utcOffset + + update = + $set: + utcOffset: utcOffset + + return @update query, update diff --git a/server/configuration/accounts_meld.coffee b/server/configuration/accounts_meld.coffee index 0794d7ec218..1893e66e434 100644 --- a/server/configuration/accounts_meld.coffee +++ b/server/configuration/accounts_meld.coffee @@ -25,13 +25,6 @@ Accounts.updateOrCreateUserFromExternalService = (serviceName, serviceData, opti user = RocketChat.models.Users.findOneByVerifiedEmailAddress(serviceData.email, true) if user? - serviceIdKey = "services." + serviceName + ".id" - update = {} - update[serviceIdKey] = serviceData.id - Meteor.users.update({ - _id: user._id - }, { - $set: update - }) + RocketChat.models.Users.setServiceId user._id, serviceName, serviceData.id return orig_updateOrCreateUserFromExternalService.apply(this, arguments) diff --git a/server/methods/eraseRoom.coffee b/server/methods/eraseRoom.coffee index 0bb6e5d10b8..90881984d00 100644 --- a/server/methods/eraseRoom.coffee +++ b/server/methods/eraseRoom.coffee @@ -10,10 +10,6 @@ Meteor.methods # ChatRoom.update({ _id: rid}, {'$pull': { userWatching: Meteor.userId(), userIn: Meteor.userId() }}) - userUnset = {'$unset': {}} - userUnset.$unset['readMessages.' + rid] = '' - Meteor.users.update({_id: Meteor.userId()}, userUnset) - ChatMessage.remove({rid: rid}) ChatSubscription.remove({rid: rid}) ChatRoom.remove(rid) diff --git a/server/methods/registerUser.coffee b/server/methods/registerUser.coffee index e7596a3a04b..ec9baf84f49 100644 --- a/server/methods/registerUser.coffee +++ b/server/methods/registerUser.coffee @@ -6,9 +6,7 @@ Meteor.methods userId = Accounts.createUser userData - Meteor.users.update userId, - $set: - name: formData.name + RocketChat.models.Users.setName userId, formData.name if userData.email Accounts.sendVerificationEmail(userId, userData.email); diff --git a/server/methods/resetAvatar.coffee b/server/methods/resetAvatar.coffee index 2b49fdbf3db..c3e31abe508 100644 --- a/server/methods/resetAvatar.coffee +++ b/server/methods/resetAvatar.coffee @@ -9,7 +9,7 @@ Meteor.methods RocketChatFileAvatarInstance.deleteFile "#{user.username}.jpg" - Meteor.users.update user._id, {$unset: {avatarOrigin: 1}} + RocketChat.models.Users.unsetAvatarOrigin user._id RocketChat.Notifications.notifyAll 'updateAvatar', {username: user.username} return diff --git a/server/methods/saveUserPreferences.coffee b/server/methods/saveUserPreferences.coffee index bd04edc631a..4a7e414a0b2 100644 --- a/server/methods/saveUserPreferences.coffee +++ b/server/methods/saveUserPreferences.coffee @@ -23,6 +23,6 @@ Meteor.methods if settings.autoImageLoad? preferences.autoImageLoad = if settings.autoImageLoad is "1" then true else false - Meteor.users.update Meteor.userId(), { $set: { "settings.preferences": preferences } } + RocketChat.models.Users.setPreferences Meteor.userId(), preferences return true diff --git a/server/methods/saveUserProfile.coffee b/server/methods/saveUserProfile.coffee index 4129201e979..40131de389e 100644 --- a/server/methods/saveUserProfile.coffee +++ b/server/methods/saveUserProfile.coffee @@ -2,7 +2,7 @@ Meteor.methods saveUserProfile: (settings) -> if Meteor.userId() if settings.language? - Meteor.users.update Meteor.userId(), { $set: { language: settings.language } } + RocketChat.models.Users.setLanguage Meteor.userId(), settings.language if settings.password? Accounts.setPassword Meteor.userId(), settings.password, { logout: false } @@ -12,6 +12,6 @@ Meteor.methods profile = {} - Meteor.users.update Meteor.userId(), { $set: { "settings.profile": profile } } + RocketChat.models.Users.setProfile Meteor.userId(), profile return true diff --git a/server/methods/setAvatarFromService.coffee b/server/methods/setAvatarFromService.coffee index 475c005a598..90df44e2ad2 100644 --- a/server/methods/setAvatarFromService.coffee +++ b/server/methods/setAvatarFromService.coffee @@ -8,7 +8,7 @@ Meteor.methods user = Meteor.user() if service is 'initials' - Meteor.users.update {_id: user._id}, {$set: {avatarOrigin: service}} + RocketChat.models.Users.setAvatarOrigin user._id, service return {image, contentType} = RocketChatFile.dataURIParse dataURI @@ -17,7 +17,7 @@ Meteor.methods ws = RocketChatFileAvatarInstance.createWriteStream "#{user.username}.jpg", contentType ws.on 'end', Meteor.bindEnvironment -> Meteor.setTimeout -> - Meteor.users.update {_id: user._id}, {$set: {avatarOrigin: service}} + RocketChat.models.Users.setAvatarOrigin user._id, service RocketChat.Notifications.notifyAll 'updateAvatar', {username: user.username} , 500 diff --git a/server/methods/setUserActiveStatus.coffee b/server/methods/setUserActiveStatus.coffee index c44862871ec..59e4dd268c3 100644 --- a/server/methods/setUserActiveStatus.coffee +++ b/server/methods/setUserActiveStatus.coffee @@ -7,9 +7,9 @@ Meteor.methods unless user?.admin is true throw new Meteor.Error 'not-authorized', '[methods] setUserActiveStatus -> Not authorized' - Meteor.users.update userId, { $set: { active: active } } + RocketChat.models.Users.setUserActive userId, active if active is false - Meteor.users.update userId, { $set: { "services.resume.loginTokens" : [] } } + RocketChat.models.Users.unsetLoginTokens userId return true diff --git a/server/methods/updateUserUtcOffset.coffee b/server/methods/updateUserUtcOffset.coffee index f5b800c257e..a116647e1c2 100644 --- a/server/methods/updateUserUtcOffset.coffee +++ b/server/methods/updateUserUtcOffset.coffee @@ -5,4 +5,4 @@ Meteor.methods @unblock() - Meteor.users.update({_id: @userId, utcOffset: {$ne: utcOffset}}, {$set: {utcOffset: utcOffset}}) \ No newline at end of file + RocketChat.models.Users.setUtcOffset @userId, utcOffset diff --git a/server/startup/migrations/v1.coffee b/server/startup/migrations/v1.coffee index f56561d7342..e2f1756dd10 100644 --- a/server/startup/migrations/v1.coffee +++ b/server/startup/migrations/v1.coffee @@ -5,6 +5,6 @@ Meteor.startup -> RocketChat.models.Users.find({username: {$exists: false}, lastLogin: {$exists: true}}).forEach (user) -> username = generateSuggestion(user) if username? and username.trim() isnt '' - Meteor.users.update({_id: user._id}, {$set: {username: username}}) + RocketChat.models.Users.setUsername user._id, username else console.log "User without username", JSON.stringify(user, null, ' ') diff --git a/server/startup/migrations/v13.coffee b/server/startup/migrations/v13.coffee index be8b90dbee5..0d7c18d745e 100644 --- a/server/startup/migrations/v13.coffee +++ b/server/startup/migrations/v13.coffee @@ -3,5 +3,5 @@ Meteor.startup -> version: 13 up: -> # Set all current users as active - Meteor.users.update {}, { $set: { active: true } }, { multi: true } - console.log "Set all users as active" \ No newline at end of file + RocketChat.models.Users.setAllUsersActive true + console.log "Set all users as active" diff --git a/server/startup/migrations/v2.coffee b/server/startup/migrations/v2.coffee index 05b81ba3d2e..baf7777b185 100644 --- a/server/startup/migrations/v2.coffee +++ b/server/startup/migrations/v2.coffee @@ -20,6 +20,6 @@ Meteor.startup -> rs = RocketChatFile.bufferToStream new Buffer(image, 'base64') ws = RocketChatFileAvatarInstance.createWriteStream "#{user.username}.jpg", contentType ws.on 'end', Meteor.bindEnvironment -> - Meteor.users.update {_id: user._id}, {$set: {avatarOrigin: service}} + RocketChat.models.Users.setAvatarOrigin user._id, service rs.pipe(ws) diff --git a/server/startup/migrations/v5.coffee b/server/startup/migrations/v5.coffee index d1d2218adb9..12cd247c20f 100644 --- a/server/startup/migrations/v5.coffee +++ b/server/startup/migrations/v5.coffee @@ -29,7 +29,7 @@ Meteor.startup -> if RocketChat.models.Users.findOneByUsername(newUserName) newUserName = newUserName + Math.floor((Math.random() * 10) + 1); console.log 'Adding: username ' + newUserName + ' to all user ' + user._id; - Meteor.users.update({'_id':user._id},{'$set':{'username':newUserName}}); + RocketChat.models.Users.setUsername user._id, newUserName console.log 'Fixing _id of direct messages rooms' -- GitLab