From d33d3cdc0b34feba70eb56ecda3cd1218404ae6c Mon Sep 17 00:00:00 2001 From: Kautilya Tripathi Date: Thu, 14 Mar 2019 18:10:14 +0530 Subject: [PATCH] [FIX] Changing Room name updates the webhook (#13672) * Fixes #8477 * Rebased branch * CI fix --- app/channel-settings/server/functions/saveRoomName.js | 10 ++++++++-- app/models/server/models/Integrations.js | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/channel-settings/server/functions/saveRoomName.js b/app/channel-settings/server/functions/saveRoomName.js index 743da2c3aa7..96a89a6e215 100644 --- a/app/channel-settings/server/functions/saveRoomName.js +++ b/app/channel-settings/server/functions/saveRoomName.js @@ -1,5 +1,5 @@ import { Meteor } from 'meteor/meteor'; -import { Rooms, Messages, Subscriptions } from '/app/models'; +import { Rooms, Messages, Subscriptions, Integrations } from '/app/models'; import { roomTypes, getValidRoomName } from '/app/utils'; export const saveRoomName = function(rid, displayName, user, sendMessage = true) { @@ -17,7 +17,13 @@ export const saveRoomName = function(rid, displayName, user, sendMessage = true) const update = Rooms.setNameById(rid, slugifiedRoomName, displayName) && Subscriptions.updateNameAndAlertByRoomId(rid, slugifiedRoomName, displayName); - if (update && sendMessage) { + if (!update) { + return; + } + + Integrations.updateRoomName(room.name, displayName); + + if (sendMessage) { Messages.createRoomRenamedWithRoomIdRoomNameAndUser(rid, displayName, user); } return displayName; diff --git a/app/models/server/models/Integrations.js b/app/models/server/models/Integrations.js index 7686e7d5632..2d9128c99cd 100644 --- a/app/models/server/models/Integrations.js +++ b/app/models/server/models/Integrations.js @@ -17,6 +17,12 @@ export class Integrations extends Base { disableByUserId(userId) { return this.update({ userId }, { $set: { enabled: false } }, { multi: true }); } + + updateRoomName(oldRoomName, newRoomName) { + const hashedOldRoomName = `#${ oldRoomName }`; + const hashedNewRoomName = `#${ newRoomName }`; + return this.update({ channel: hashedOldRoomName }, { $set: { 'channel.$': hashedNewRoomName } }, { multi: true }); + } } export default new Integrations();