From 81158ad044a465769bef955e0c45dd1b32658dfd Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 17:18:56 -0300 Subject: [PATCH 01/10] Add `fname` to subscriptions in memory --- .../server/models/Subscriptions.coffee | 1 + .../rocketchat-lib/server/models/Users.coffee | 2 ++ .../server/models/_BaseCache.js | 20 ++++++++++++++----- .../server/startup/cache/CacheLoad.js | 19 ++++++++++++++++++ 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/packages/rocketchat-lib/server/models/Subscriptions.coffee b/packages/rocketchat-lib/server/models/Subscriptions.coffee index 7b9aa80e605a..d94e20812377 100644 --- a/packages/rocketchat-lib/server/models/Subscriptions.coffee +++ b/packages/rocketchat-lib/server/models/Subscriptions.coffee @@ -21,6 +21,7 @@ class ModelSubscriptions extends RocketChat.models._Base this.cache.ensureIndex('rid', 'array') this.cache.ensureIndex('u._id', 'array') + this.cache.ensureIndex('name', 'array') this.cache.ensureIndex(['rid', 'u._id'], 'unique') this.cache.ensureIndex(['name', 'u._id'], 'unique') diff --git a/packages/rocketchat-lib/server/models/Users.coffee b/packages/rocketchat-lib/server/models/Users.coffee index 8eef5f4ab515..b6fbfcf00ec3 100644 --- a/packages/rocketchat-lib/server/models/Users.coffee +++ b/packages/rocketchat-lib/server/models/Users.coffee @@ -10,6 +10,8 @@ class ModelUsers extends RocketChat.models._Base @tryEnsureIndex { 'statusConnection': 1 }, { sparse: 1 } @tryEnsureIndex { 'type': 1 } + this.cache.ensureIndex('username', 'unique') + findOneByImportId: (_id, options) -> return @findOne { importIds: _id }, options diff --git a/packages/rocketchat-lib/server/models/_BaseCache.js b/packages/rocketchat-lib/server/models/_BaseCache.js index f31a0230d3ce..2013d813a259 100644 --- a/packages/rocketchat-lib/server/models/_BaseCache.js +++ b/packages/rocketchat-lib/server/models/_BaseCache.js @@ -230,18 +230,24 @@ class ModelsBaseCache extends EventEmitter { localRecord[field] = []; } + if (typeof link.where === 'function' && link.where(localRecord, record) === false) { + continue; + } + + let mutableRecord = record; + if (typeof link.transform === 'function') { - record = link.transform(localRecord, record); + mutableRecord = link.transform(localRecord, mutableRecord); } if (multi === true) { - localRecord[field].push(record); + localRecord[field].push(mutableRecord); } else { - localRecord[field] = record; + localRecord[field] = mutableRecord; } - this.emit(`join:${ field }:inserted`, localRecord, record); - this.emit(`join:${ field }:changed`, 'inserted', localRecord, record); + this.emit(`join:${ field }:inserted`, localRecord, mutableRecord); + this.emit(`join:${ field }:changed`, 'inserted', localRecord, mutableRecord); } } @@ -255,6 +261,10 @@ class ModelsBaseCache extends EventEmitter { for (let i = 0; i < records.length; i++) { let record = records[i]; + if (typeof link.where === 'function' && link.where(localRecord, record) === false) { + continue; + } + if (typeof link.transform === 'function') { record = link.transform(localRecord, record); } diff --git a/packages/rocketchat-lib/server/startup/cache/CacheLoad.js b/packages/rocketchat-lib/server/startup/cache/CacheLoad.js index ac56be599002..3566b8c14dc0 100644 --- a/packages/rocketchat-lib/server/startup/cache/CacheLoad.js +++ b/packages/rocketchat-lib/server/startup/cache/CacheLoad.js @@ -32,6 +32,25 @@ RocketChat.models.Subscriptions.cache.hasOne('Users', { } }); +RocketChat.models.Subscriptions.cache.hasOne('Users', { + field: 'fname', + link: { + local: 'name', + remote: 'username', + where(subscription/*, user*/) { + return subscription.t === 'd'; + }, + transform(subscription, user) { + // Prevent client cache for old subscriptions with new names + // Cuz when a user change his name, the subscription's _updateAt + // will not change + if (subscription._updatedAt < user._updatedAt) { + subscription._updatedAt = user._updatedAt; + } + return user.name; + } + } +}); RocketChat.models.Users.cache.load(); RocketChat.models.Rooms.cache.load(); From 03c04e6af7b3977364df543d427589ebb330462a Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 17:32:06 -0300 Subject: [PATCH 02/10] =?UTF-8?q?Send=20user=E2=80=99s=20name=20within=20m?= =?UTF-8?q?essage=20records?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/rocketchat-lib/server/functions/sendMessage.coffee | 2 +- packages/rocketchat-lib/server/methods/getChannelHistory.js | 4 ++++ server/methods/loadHistory.js | 4 ++++ server/stream/messages.js | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-lib/server/functions/sendMessage.coffee b/packages/rocketchat-lib/server/functions/sendMessage.coffee index e25bf08cb8dc..bdce87faba4d 100644 --- a/packages/rocketchat-lib/server/functions/sendMessage.coffee +++ b/packages/rocketchat-lib/server/functions/sendMessage.coffee @@ -5,7 +5,7 @@ RocketChat.sendMessage = (user, message, room, upsert = false) -> unless message.ts? message.ts = new Date() - message.u = _.pick user, ['_id','username', 'name'] + message.u = _.pick user, ['_id','username'] if not Match.test(message.msg, String) message.msg = '' diff --git a/packages/rocketchat-lib/server/methods/getChannelHistory.js b/packages/rocketchat-lib/server/methods/getChannelHistory.js index 03958a40fae5..8380f6e50c47 100644 --- a/packages/rocketchat-lib/server/methods/getChannelHistory.js +++ b/packages/rocketchat-lib/server/methods/getChannelHistory.js @@ -51,6 +51,10 @@ Meteor.methods({ const messages = _.map(records, (message) => { message.starred = _.findWhere(message.starred, { _id: fromUserId }); + if (message.u && message.u._id) { + const user = RocketChat.models.Users.findOneById(message.u._id); + message.u.name = user && user.name; + } return message; }); diff --git a/server/methods/loadHistory.js b/server/methods/loadHistory.js index 4fbc65137de7..fa43bd382327 100644 --- a/server/methods/loadHistory.js +++ b/server/methods/loadHistory.js @@ -62,6 +62,10 @@ Meteor.methods({ message.starred = _.findWhere(message.starred, { _id: fromId }); + if (message.u && message.u._id) { + const user = RocketChat.models.Users.findOneById(message.u._id); + message.u.name = user && user.name; + } return message; }); diff --git a/server/stream/messages.js b/server/stream/messages.js index c9e089db9471..30ea3480f7ce 100644 --- a/server/stream/messages.js +++ b/server/stream/messages.js @@ -45,6 +45,10 @@ msgStream.allowEmit('__my_messages__', function(eventName, msg, options) { Meteor.startup(function() { function publishMessage(type, record) { if (record._hidden !== true && (record.imported == null)) { + if (record.u && record.u._id) { + const user = RocketChat.models.Users.findOneById(record.u._id); + record.u.name = user && user.name; + } msgStream.emitWithoutBroadcast('__my_messages__', record, {}); return msgStream.emitWithoutBroadcast(record.rid, record); } From fc0933345a170b2fc36e532240df105781d4cf2a Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 18:19:03 -0300 Subject: [PATCH 03/10] =?UTF-8?q?Do=20not=20set=20user=E2=80=99s=20name=20?= =?UTF-8?q?on=20messages=20or=20subscriptions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketchat-lib/server/functions/setRealName.js | 7 ------- packages/rocketchat-lib/server/methods/setRealName.js | 10 ---------- packages/rocketchat-lib/server/models/Messages.coffee | 11 ----------- .../rocketchat-lib/server/models/Subscriptions.coffee | 11 ----------- server/methods/saveUserProfile.js | 2 +- server/startup/migrations/v091.js | 2 -- 6 files changed, 1 insertion(+), 42 deletions(-) diff --git a/packages/rocketchat-lib/server/functions/setRealName.js b/packages/rocketchat-lib/server/functions/setRealName.js index 93d7545e7796..935a4a7e7017 100644 --- a/packages/rocketchat-lib/server/functions/setRealName.js +++ b/packages/rocketchat-lib/server/functions/setRealName.js @@ -11,13 +11,6 @@ RocketChat._setRealName = function(userId, name) { return user; } - const previousName = user.name; - - if (previousName) { - RocketChat.models.Messages.updateAllNamesByUserId(user._id, name); - RocketChat.models.Subscriptions.setRealNameForDirectRoomsWithUsername(user.username, name); - } - // Set new name RocketChat.models.Users.setName(user._id, name); user.name = name; diff --git a/packages/rocketchat-lib/server/methods/setRealName.js b/packages/rocketchat-lib/server/methods/setRealName.js index 467bb979822e..ee0ba56bf635 100644 --- a/packages/rocketchat-lib/server/methods/setRealName.js +++ b/packages/rocketchat-lib/server/methods/setRealName.js @@ -7,16 +7,6 @@ Meteor.methods({ throw new Meteor.Error('error-invalid-user', 'Invalid user', { method: 'setRealName' }); } - const user = Meteor.user(); - - if (user.name === name) { - return name; - } - - if (_.trim(name)) { - name = _.trim(name); - } - if (!RocketChat.setRealName(Meteor.userId(), name)) { throw new Meteor.Error('error-could-not-change-name', 'Could not change name', { method: 'setRealName' }); } diff --git a/packages/rocketchat-lib/server/models/Messages.coffee b/packages/rocketchat-lib/server/models/Messages.coffee index 524133ae7b0e..8ac7b4efcd7b 100644 --- a/packages/rocketchat-lib/server/models/Messages.coffee +++ b/packages/rocketchat-lib/server/models/Messages.coffee @@ -320,16 +320,6 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base return @update query, update - updateAllNamesByUserId: (userId, name) -> - query = - 'u._id': userId - - update = - $set: - "u.name": name - - return @update query, update, { multi: true } - updateUserStarById: (_id, userId, starred) -> query = _id: _id @@ -390,7 +380,6 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base u: _id: user._id username: user.username - name: user.name groupable: false _.extend record, extraData diff --git a/packages/rocketchat-lib/server/models/Subscriptions.coffee b/packages/rocketchat-lib/server/models/Subscriptions.coffee index d94e20812377..95f12bff51ff 100644 --- a/packages/rocketchat-lib/server/models/Subscriptions.coffee +++ b/packages/rocketchat-lib/server/models/Subscriptions.coffee @@ -243,17 +243,6 @@ class ModelSubscriptions extends RocketChat.models._Base return @update query, update, { multi: true } - setRealNameForDirectRoomsWithUsername: (username, name) -> - query = - name: username - t: "d" - - update = - $set: - fname: name - - return @update query, update, { multi: true } - setNameForDirectRoomsWithOldName: (oldName, name) -> query = name: oldName diff --git a/server/methods/saveUserProfile.js b/server/methods/saveUserProfile.js index 765233e92141..a70d7aab30f5 100644 --- a/server/methods/saveUserProfile.js +++ b/server/methods/saveUserProfile.js @@ -44,7 +44,7 @@ Meteor.methods({ } if (settings.realname) { - Meteor.call('setRealName', settings.realname); + RocketChat.setRealName(Meteor.userId(), settings.realname); } if (settings.username) { diff --git a/server/startup/migrations/v091.js b/server/startup/migrations/v091.js index 3e56a784ba57..96dc7c7391c4 100644 --- a/server/startup/migrations/v091.js +++ b/server/startup/migrations/v091.js @@ -18,8 +18,6 @@ RocketChat.Migrations.add({ const name = `${ user.services.linkedin.firstName } ${ user.services.linkedin.lastName }`; RocketChat.models.Users.setName(user._id, name); - RocketChat.models.Messages.updateAllNamesByUserId(user._id, name); - RocketChat.models.Subscriptions.setRealNameForDirectRoomsWithUsername(user.username, name); }); } }); From 9f8aa608b760962bec4473a56e86fdbdc4d24876 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 18:19:35 -0300 Subject: [PATCH 04/10] =?UTF-8?q?Update=20messages=20and=20subscriptions?= =?UTF-8?q?=20on=20user=E2=80=99s=20name=20changed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/notifications/UsersNameChanged.js | 22 +++++++++++++++++++ .../server/functions/setRealName.js | 7 ++++++ 2 files changed, 29 insertions(+) create mode 100644 client/notifications/UsersNameChanged.js diff --git a/client/notifications/UsersNameChanged.js b/client/notifications/UsersNameChanged.js new file mode 100644 index 000000000000..77d153ba708d --- /dev/null +++ b/client/notifications/UsersNameChanged.js @@ -0,0 +1,22 @@ +Meteor.startup(function() { + RocketChat.Notifications.onLogged('Users:NameChanged', function({_id, name, username}) { + RocketChat.models.Messages.update({ + 'u._id': _id + }, { + $set: { + 'u.name': name + } + }, { + multi: true + }); + + RocketChat.models.Subscriptions.update({ + name: username, + t: 'd' + }, { + $set: { + fname: name + } + }); + }); +}); diff --git a/packages/rocketchat-lib/server/functions/setRealName.js b/packages/rocketchat-lib/server/functions/setRealName.js index 935a4a7e7017..d692fb8d9496 100644 --- a/packages/rocketchat-lib/server/functions/setRealName.js +++ b/packages/rocketchat-lib/server/functions/setRealName.js @@ -14,6 +14,13 @@ RocketChat._setRealName = function(userId, name) { // Set new name RocketChat.models.Users.setName(user._id, name); user.name = name; + + RocketChat.Notifications.notifyLogged('Users:NameChanged', { + _id: user._id, + name: user.name, + username: user.username + }); + return user; }; From a172517680015763e3ce68c5c2df5f47c41898d2 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 18:28:40 -0300 Subject: [PATCH 05/10] Remove unnecessary name copies --- packages/rocketchat-lib/server/functions/addUserToRoom.js | 3 +-- server/methods/addRoomModerator.js | 3 +-- server/methods/addRoomOwner.js | 6 +++--- server/methods/createDirectMessage.js | 2 -- server/methods/muteUserInRoom.js | 3 +-- server/methods/removeRoomModerator.js | 6 +++--- server/methods/removeRoomOwner.js | 6 +++--- server/methods/removeUserFromRoom.js | 3 +-- server/methods/unmuteUserInRoom.js | 3 +-- 9 files changed, 14 insertions(+), 21 deletions(-) diff --git a/packages/rocketchat-lib/server/functions/addUserToRoom.js b/packages/rocketchat-lib/server/functions/addUserToRoom.js index b27acb1f6791..47ae76aeaabe 100644 --- a/packages/rocketchat-lib/server/functions/addUserToRoom.js +++ b/packages/rocketchat-lib/server/functions/addUserToRoom.js @@ -27,8 +27,7 @@ RocketChat.addUserToRoom = function(rid, user, inviter, silenced) { ts: now, u: { _id: inviter._id, - username: inviter.username, - name: inviter.name + username: inviter.username } }); } else { diff --git a/server/methods/addRoomModerator.js b/server/methods/addRoomModerator.js index d2809120c55d..df2643687282 100644 --- a/server/methods/addRoomModerator.js +++ b/server/methods/addRoomModerator.js @@ -44,8 +44,7 @@ Meteor.methods({ RocketChat.models.Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, { u: { _id: fromUser._id, - username: fromUser.username, - name: fromUser.name + username: fromUser.username }, role: 'moderator' }); diff --git a/server/methods/addRoomOwner.js b/server/methods/addRoomOwner.js index 8711648d7b3e..163e7cfabb36 100644 --- a/server/methods/addRoomOwner.js +++ b/server/methods/addRoomOwner.js @@ -44,8 +44,7 @@ Meteor.methods({ RocketChat.models.Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, { u: { _id: fromUser._id, - username: fromUser.username, - name: fromUser.name + username: fromUser.username }, role: 'owner' }); @@ -56,7 +55,8 @@ Meteor.methods({ _id: 'owner', u: { _id: user._id, - username: user.username + username: user.username, + name: user.name }, scope: rid }); diff --git a/server/methods/createDirectMessage.js b/server/methods/createDirectMessage.js index 62517cc7193b..ea60ca95dd5d 100644 --- a/server/methods/createDirectMessage.js +++ b/server/methods/createDirectMessage.js @@ -63,7 +63,6 @@ Meteor.methods({ }, $setOnInsert: { name: to.username, - fname: to.name, t: 'd', alert: false, unread: 0, @@ -89,7 +88,6 @@ Meteor.methods({ }, { $setOnInsert: { name: me.username, - fname: me.name, t: 'd', open: false, alert: false, diff --git a/server/methods/muteUserInRoom.js b/server/methods/muteUserInRoom.js index 362651d529d1..862ee9a9511d 100644 --- a/server/methods/muteUserInRoom.js +++ b/server/methods/muteUserInRoom.js @@ -49,8 +49,7 @@ Meteor.methods({ RocketChat.models.Messages.createUserMutedWithRoomIdAndUser(data.rid, mutedUser, { u: { _id: fromUser._id, - username: fromUser.username, - name: fromUser.name + username: fromUser.username } }); diff --git a/server/methods/removeRoomModerator.js b/server/methods/removeRoomModerator.js index 7347bc696d85..0999a6946b85 100644 --- a/server/methods/removeRoomModerator.js +++ b/server/methods/removeRoomModerator.js @@ -44,8 +44,7 @@ Meteor.methods({ RocketChat.models.Messages.createSubscriptionRoleRemovedWithRoomIdAndUser(rid, user, { u: { _id: fromUser._id, - username: fromUser.username, - name: fromUser.name + username: fromUser.username }, role: 'moderator' }); @@ -56,7 +55,8 @@ Meteor.methods({ _id: 'moderator', u: { _id: user._id, - username: user.username + username: user.username, + name: user.name }, scope: rid }); diff --git a/server/methods/removeRoomOwner.js b/server/methods/removeRoomOwner.js index b566e18aaecc..7ea2333f3512 100644 --- a/server/methods/removeRoomOwner.js +++ b/server/methods/removeRoomOwner.js @@ -51,8 +51,7 @@ Meteor.methods({ RocketChat.models.Messages.createSubscriptionRoleRemovedWithRoomIdAndUser(rid, user, { u: { _id: fromUser._id, - username: fromUser.username, - name: fromUser.name + username: fromUser.username }, role: 'owner' }); @@ -63,7 +62,8 @@ Meteor.methods({ _id: 'owner', u: { _id: user._id, - username: user.username + username: user.username, + name: user.name }, scope: rid }); diff --git a/server/methods/removeUserFromRoom.js b/server/methods/removeUserFromRoom.js index 23d83021185a..4a2984d4ebf6 100644 --- a/server/methods/removeUserFromRoom.js +++ b/server/methods/removeUserFromRoom.js @@ -58,8 +58,7 @@ Meteor.methods({ RocketChat.models.Messages.createUserRemovedWithRoomIdAndUser(data.rid, removedUser, { u: { _id: fromUser._id, - username: fromUser.username, - name: fromUser.name + username: fromUser.username } }); diff --git a/server/methods/unmuteUserInRoom.js b/server/methods/unmuteUserInRoom.js index 32d1a6e43bb3..3c75b44921f3 100644 --- a/server/methods/unmuteUserInRoom.js +++ b/server/methods/unmuteUserInRoom.js @@ -43,8 +43,7 @@ Meteor.methods({ RocketChat.models.Messages.createUserUnmutedWithRoomIdAndUser(data.rid, unmutedUser, { u: { _id: fromUser._id, - username: fromUser.username, - name: fromUser.name + username: fromUser.username } }); From 90b5b8b8ea120160d6ce7bc379f42b2882aba0c8 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 18:34:35 -0300 Subject: [PATCH 06/10] =?UTF-8?q?Only=20process=20messages=20to=20set=20us?= =?UTF-8?q?er=E2=80=99s=20name=20when=20necessary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketchat-lib/server/functions/setRealName.js | 12 +++++++----- .../server/methods/getChannelHistory.js | 4 +++- server/methods/loadHistory.js | 4 +++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/rocketchat-lib/server/functions/setRealName.js b/packages/rocketchat-lib/server/functions/setRealName.js index d692fb8d9496..359287b9b49a 100644 --- a/packages/rocketchat-lib/server/functions/setRealName.js +++ b/packages/rocketchat-lib/server/functions/setRealName.js @@ -15,11 +15,13 @@ RocketChat._setRealName = function(userId, name) { RocketChat.models.Users.setName(user._id, name); user.name = name; - RocketChat.Notifications.notifyLogged('Users:NameChanged', { - _id: user._id, - name: user.name, - username: user.username - }); + if (RocketChat.settings.get('UI_Use_Real_Name') === true) { + RocketChat.Notifications.notifyLogged('Users:NameChanged', { + _id: user._id, + name: user.name, + username: user.username + }); + } return user; }; diff --git a/packages/rocketchat-lib/server/methods/getChannelHistory.js b/packages/rocketchat-lib/server/methods/getChannelHistory.js index 8380f6e50c47..e2f40ebe748a 100644 --- a/packages/rocketchat-lib/server/methods/getChannelHistory.js +++ b/packages/rocketchat-lib/server/methods/getChannelHistory.js @@ -49,9 +49,11 @@ Meteor.methods({ records = RocketChat.models.Messages.findVisibleByRoomIdBetweenTimestamps(rid, oldest, latest, options).fetch(); } + const UI_Use_Real_Name = RocketChat.settings.get('UI_Use_Real_Name') === true; + const messages = _.map(records, (message) => { message.starred = _.findWhere(message.starred, { _id: fromUserId }); - if (message.u && message.u._id) { + if (message.u && message.u._id && UI_Use_Real_Name) { const user = RocketChat.models.Users.findOneById(message.u._id); message.u.name = user && user.name; } diff --git a/server/methods/loadHistory.js b/server/methods/loadHistory.js index fa43bd382327..8404d9e81b8e 100644 --- a/server/methods/loadHistory.js +++ b/server/methods/loadHistory.js @@ -58,11 +58,13 @@ Meteor.methods({ records = RocketChat.models.Messages.findVisibleByRoomIdNotContainingTypes(rid, hideMessagesOfType, options).fetch(); } + const UI_Use_Real_Name = RocketChat.settings.get('UI_Use_Real_Name') === true; + const messages = records.map((message) => { message.starred = _.findWhere(message.starred, { _id: fromId }); - if (message.u && message.u._id) { + if (message.u && message.u._id && UI_Use_Real_Name) { const user = RocketChat.models.Users.findOneById(message.u._id); message.u.name = user && user.name; } From 1ccc23e68b70651c38f3a6c4f3c7e741bf8e725f Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 20:00:05 -0300 Subject: [PATCH 07/10] Fix problem with subscription name been resetted --- server/publications/subscription.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/publications/subscription.js b/server/publications/subscription.js index 4fb6fe7d9304..1ab9e116ce51 100644 --- a/server/publications/subscription.js +++ b/server/publications/subscription.js @@ -60,7 +60,16 @@ Meteor.methods({ }); RocketChat.models.Subscriptions.on('changed', function(type, subscription) { - return RocketChat.Notifications.notifyUserInThisInstance(subscription.u._id, 'subscriptions-changed', type, RocketChat.models.Subscriptions.processQueryOptionsOnResult(subscription, { + RocketChat.Notifications.notifyUserInThisInstance(subscription.u._id, 'subscriptions-changed', type, RocketChat.models.Subscriptions.processQueryOptionsOnResult(subscription, { + fields + })); +}); + +// TODO needs improvement +// We are sending the record again cuz any update on subscription will send the record without the fname (join) +// Then we need to sent it again listening to the join event. +RocketChat.models.Subscriptions.on('join:fname:inserted', function(subscription/*, user*/) { + RocketChat.Notifications.notifyUserInThisInstance(subscription.u._id, 'subscriptions-changed', 'changed', RocketChat.models.Subscriptions.processQueryOptionsOnResult(subscription, { fields })); }); From fc5363698d1d789b423d326a6179af20f172fc8a Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 20:02:56 -0300 Subject: [PATCH 08/10] Check setting UI_Use_Real_Name before send new messages --- server/stream/messages.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/stream/messages.js b/server/stream/messages.js index 30ea3480f7ce..cffeb442a7cb 100644 --- a/server/stream/messages.js +++ b/server/stream/messages.js @@ -45,7 +45,9 @@ msgStream.allowEmit('__my_messages__', function(eventName, msg, options) { Meteor.startup(function() { function publishMessage(type, record) { if (record._hidden !== true && (record.imported == null)) { - if (record.u && record.u._id) { + const UI_Use_Real_Name = RocketChat.settings.get('UI_Use_Real_Name') === true; + + if (record.u && record.u._id && UI_Use_Real_Name) { const user = RocketChat.models.Users.findOneById(record.u._id); record.u.name = user && user.name; } From e6df308c4b7bd0bb93444dc37646ae24d233f30f Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Tue, 4 Apr 2017 22:50:08 -0300 Subject: [PATCH 09/10] Prevent erros on travis --- packages/rocketchat-lib/server/startup/cache/CacheLoad.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/rocketchat-lib/server/startup/cache/CacheLoad.js b/packages/rocketchat-lib/server/startup/cache/CacheLoad.js index 3566b8c14dc0..8f555fc454c7 100644 --- a/packages/rocketchat-lib/server/startup/cache/CacheLoad.js +++ b/packages/rocketchat-lib/server/startup/cache/CacheLoad.js @@ -41,6 +41,9 @@ RocketChat.models.Subscriptions.cache.hasOne('Users', { return subscription.t === 'd'; }, transform(subscription, user) { + if (user == null || subscription == null) { + return undefined; + } // Prevent client cache for old subscriptions with new names // Cuz when a user change his name, the subscription's _updateAt // will not change From b152621d5e615ef87ef923786fc442a2538e979f Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 6 Apr 2017 09:41:20 -0300 Subject: [PATCH 10/10] Add user's real name on sendMessage stub --- packages/rocketchat-lib/client/methods/sendMessage.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-lib/client/methods/sendMessage.coffee b/packages/rocketchat-lib/client/methods/sendMessage.coffee index c8ae9426c32a..68cb0a2f8c6e 100644 --- a/packages/rocketchat-lib/client/methods/sendMessage.coffee +++ b/packages/rocketchat-lib/client/methods/sendMessage.coffee @@ -9,9 +9,13 @@ Meteor.methods else message.ts = new Date(Date.now() + TimeSync.serverOffset()) + user = Meteor.user() message.u = _id: Meteor.userId() - username: Meteor.user().username + username: user.username + + if RocketChat.settings.get('UI_Use_Real_Name') + message.u.name = user.name message.temp = true