From cabcecab88f7a0d95da6d9ee688aa60458d714d7 Mon Sep 17 00:00:00 2001 From: "Pierre H. Lehnen" Date: Thu, 27 Sep 2018 20:21:24 -0300 Subject: [PATCH] Fixed IRC federation's issues with the no-cache branch (#11906) --- .../server/irc-bridge/localHandlers/onCreateRoom.js | 10 +++------- .../server/irc-bridge/localHandlers/onCreateUser.js | 2 +- .../server/irc-bridge/localHandlers/onLogin.js | 2 +- .../server/irc-bridge/peerHandlers/sentMessage.js | 3 --- packages/rocketchat-lib/server/models/Rooms.js | 4 ---- packages/rocketchat-lib/server/models/Users.js | 10 ++++++++++ 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateRoom.js b/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateRoom.js index 7ca1dc2614d..f5f76f3b7a0 100644 --- a/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateRoom.js +++ b/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateRoom.js @@ -1,15 +1,11 @@ export default function handleOnCreateRoom(user, room) { - if (!room.usernames) { - return this.log(`Room ${ room.name } does not have a valid list of usernames`); - } - - for (const username of room.usernames) { - const user = RocketChat.models.Users.findOne({ username }); + const users = RocketChat.models.Users.findByRoomId(room._id); + users.forEach((user) => { if (user.profile.irc.fromIRC) { this.sendCommand('joinChannel', { room, user }); } else { this.sendCommand('joinedChannel', { room, user }); } - } + }); } diff --git a/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateUser.js b/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateUser.js index a6b5b0d4b9f..bca92046d38 100644 --- a/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateUser.js +++ b/packages/rocketchat-irc/server/irc-bridge/localHandlers/onCreateUser.js @@ -26,7 +26,7 @@ export default function handleOnCreateUser(newUser) { this.sendCommand('registerUser', user); - const rooms = RocketChat.models.Rooms.findWithUsername(user.username).fetch(); + const rooms = RocketChat.models.Rooms.findBySubscriptionUserId(user._id).fetch(); rooms.forEach((room) => this.sendCommand('joinedChannel', { room, user })); } diff --git a/packages/rocketchat-irc/server/irc-bridge/localHandlers/onLogin.js b/packages/rocketchat-irc/server/irc-bridge/localHandlers/onLogin.js index 25adfbc59a6..9736cc622f6 100644 --- a/packages/rocketchat-irc/server/irc-bridge/localHandlers/onLogin.js +++ b/packages/rocketchat-irc/server/irc-bridge/localHandlers/onLogin.js @@ -26,7 +26,7 @@ export default function handleOnLogin(login) { this.sendCommand('registerUser', user); - const rooms = RocketChat.models.Rooms.findWithUsername(user.username).fetch(); + const rooms = RocketChat.models.Rooms.findBySubscriptionUserId(user._id).fetch(); rooms.forEach((room) => this.sendCommand('joinedChannel', { room, user })); } diff --git a/packages/rocketchat-irc/server/irc-bridge/peerHandlers/sentMessage.js b/packages/rocketchat-irc/server/irc-bridge/peerHandlers/sentMessage.js index d38cf6ef395..2c1c5b8e2f1 100644 --- a/packages/rocketchat-irc/server/irc-bridge/peerHandlers/sentMessage.js +++ b/packages/rocketchat-irc/server/irc-bridge/peerHandlers/sentMessage.js @@ -8,9 +8,6 @@ const getDirectRoom = (source, target) => { const rid = [source._id, target._id].sort().join(''); RocketChat.models.Rooms.upsert({ _id: rid }, { - $set: { - usernames: [source.username, target.username], - }, $setOnInsert: { t: 'd', msgs: 0, diff --git a/packages/rocketchat-lib/server/models/Rooms.js b/packages/rocketchat-lib/server/models/Rooms.js index 6f895e3df3f..4b8755b874e 100644 --- a/packages/rocketchat-lib/server/models/Rooms.js +++ b/packages/rocketchat-lib/server/models/Rooms.js @@ -61,10 +61,6 @@ class ModelRooms extends RocketChat.models._Base { // FIND - findWithUsername(username, options) { - return this.find({ usernames: username }, options); - } - findById(roomId, options) { return this.find({ _id: roomId }, options); } diff --git a/packages/rocketchat-lib/server/models/Users.js b/packages/rocketchat-lib/server/models/Users.js index 4d2e523821d..c8ee1912fde 100644 --- a/packages/rocketchat-lib/server/models/Users.js +++ b/packages/rocketchat-lib/server/models/Users.js @@ -80,6 +80,16 @@ class ModelUsers extends RocketChat.models._Base { return this.find(query, options); } + findByRoomId(rid, options) { + const data = RocketChat.models.Subscriptions.findByRoomId(rid).fetch().map((item) => item.u._id); + const query = { + _id: { + $in: data, + }, + }; + + return this.find(query, options); + } findByUsername(username, options) { const query = { username };