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 };