From a32eb12593d3e4bc72e9a304b794616f99aca3be Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Thu, 23 Mar 2017 17:32:48 -0300 Subject: [PATCH] Fix visitor ending livechat if multiples still open (#6419) Close #6416 --- packages/rocketchat-livechat/app/client/views/options.js | 2 +- packages/rocketchat-livechat/server/methods/closeByVisitor.js | 4 ++-- packages/rocketchat-livechat/server/models/Rooms.js | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/rocketchat-livechat/app/client/views/options.js b/packages/rocketchat-livechat/app/client/views/options.js index e23857cc831..4d74a2af0f8 100644 --- a/packages/rocketchat-livechat/app/client/views/options.js +++ b/packages/rocketchat-livechat/app/client/views/options.js @@ -11,7 +11,7 @@ Template.options.events({ closeOnConfirm: false, html: false }, () => { - Meteor.call('livechat:closeByVisitor', (error) => { + Meteor.call('livechat:closeByVisitor', visitor.getRoom(), (error) => { if (error) { return console.log('Error ->', error); } diff --git a/packages/rocketchat-livechat/server/methods/closeByVisitor.js b/packages/rocketchat-livechat/server/methods/closeByVisitor.js index ec5c36c863c..7d3c9486f2a 100644 --- a/packages/rocketchat-livechat/server/methods/closeByVisitor.js +++ b/packages/rocketchat-livechat/server/methods/closeByVisitor.js @@ -1,10 +1,10 @@ Meteor.methods({ - 'livechat:closeByVisitor'() { + 'livechat:closeByVisitor'(roomId) { if (!Meteor.userId()) { throw new Meteor.Error('error-not-authorized', 'Not authorized', { method: 'livechat:closeByVisitor' }); } - const room = RocketChat.models.Rooms.findOneOpenByVisitorId(Meteor.userId()); + const room = RocketChat.models.Rooms.findOneOpenByVisitorId(Meteor.userId(), roomId); if (!room || !room.open) { return false; diff --git a/packages/rocketchat-livechat/server/models/Rooms.js b/packages/rocketchat-livechat/server/models/Rooms.js index 6e2d0ae02fb..e237737b4e1 100644 --- a/packages/rocketchat-livechat/server/models/Rooms.js +++ b/packages/rocketchat-livechat/server/models/Rooms.js @@ -115,8 +115,9 @@ RocketChat.models.Rooms.findByVisitorId = function(visitorId) { return this.find(query); }; -RocketChat.models.Rooms.findOneOpenByVisitorId = function(visitorId) { +RocketChat.models.Rooms.findOneOpenByVisitorId = function(visitorId, roomId) { const query = { + _id: roomId, open: true, 'v._id': visitorId };