From b6696140054639417f48d20d9758c9e3efe36bf4 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 11 Jan 2018 19:05:15 -0200 Subject: [PATCH 1/2] Fix incoming livechat when impersonating an agent --- packages/rocketchat-livechat/.app/client/lib/chatMessages.js | 2 +- .../server/methods/sendMessageLivechat.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/rocketchat-livechat/.app/client/lib/chatMessages.js b/packages/rocketchat-livechat/.app/client/lib/chatMessages.js index 1209391f61c..8323750505b 100644 --- a/packages/rocketchat-livechat/.app/client/lib/chatMessages.js +++ b/packages/rocketchat-livechat/.app/client/lib/chatMessages.js @@ -116,7 +116,7 @@ this.ChatMessages = class ChatMessages { const currentAgent = !visitor.roomSubscribed && Livechat.agent; if (currentAgent) { agent = { - _id: currentAgent._id, + agentId: currentAgent._id, username: currentAgent.username }; } diff --git a/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js b/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js index 88a2ff58764..b04213c3ef6 100644 --- a/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js +++ b/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js @@ -7,6 +7,11 @@ Meteor.methods({ check(rid, String); check(msg, String); + check(agent, Match.Maybe({ + agentId: String, + username: String + })); + const guest = LivechatVisitors.getVisitorByToken(token, { fields: { name: 1, From d6f77ba3454386b6f23156ea8116592ee988c570 Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Wed, 17 Jan 2018 11:29:31 -0200 Subject: [PATCH 2/2] [FIX] Subscriptions not removed when removing user Bypass the cache and find the subscriptions directly from database to prevent the in memory changes while deleting. The for each of the array in memory does not works cuz the array is changing the size. --- packages/rocketchat-lib/server/functions/deleteUser.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rocketchat-lib/server/functions/deleteUser.js b/packages/rocketchat-lib/server/functions/deleteUser.js index ab7ec6719b9..035e40ef944 100644 --- a/packages/rocketchat-lib/server/functions/deleteUser.js +++ b/packages/rocketchat-lib/server/functions/deleteUser.js @@ -2,7 +2,7 @@ RocketChat.deleteUser = function(userId) { const user = RocketChat.models.Users.findOneById(userId); RocketChat.models.Messages.removeByUserId(userId); // Remove user messages - RocketChat.models.Subscriptions.findByUserId(userId).forEach((subscription) => { + RocketChat.models.Subscriptions.db.findByUserId(userId).forEach((subscription) => { const room = RocketChat.models.Rooms.findOneById(subscription.rid); if (room) { if (room.t !== 'c' && room.usernames.length === 1) {