From e69b0227fd7076ec037d18f98ff36bc2de9166ba Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Wed, 22 Jun 2016 17:36:15 -0300 Subject: [PATCH] Prevent message update on multiple sendMessage calls --- packages/rocketchat-importer-hipchat/server.coffee | 2 +- packages/rocketchat-importer-slack/server.coffee | 6 +++--- .../rocketchat-importer/server/classes/ImporterBase.coffee | 2 +- .../rocketchat-integrations/server/processWebhookMessage.js | 2 +- packages/rocketchat-lib/server/functions/sendMessage.coffee | 4 ++-- packages/rocketchat-slackbridge/slackbridge.js | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/rocketchat-importer-hipchat/server.coffee b/packages/rocketchat-importer-hipchat/server.coffee index 11403bd2674..3644f0bd04f 100644 --- a/packages/rocketchat-importer-hipchat/server.coffee +++ b/packages/rocketchat-importer-hipchat/server.coffee @@ -191,7 +191,7 @@ Importer.HipChat = class Importer.HipChat extends Importer.Base _id: user._id username: user.username - RocketChat.sendMessage user, msgObj, room + RocketChat.sendMessage user, msgObj, room, true else if not nousers[message.from.user_id] nousers[message.from.user_id] = message.from diff --git a/packages/rocketchat-importer-slack/server.coffee b/packages/rocketchat-importer-slack/server.coffee index da6dcb710d0..fc760ee0ceb 100644 --- a/packages/rocketchat-importer-slack/server.coffee +++ b/packages/rocketchat-importer-slack/server.coffee @@ -226,7 +226,7 @@ Importer.Slack = class Importer.Slack extends Importer.Base msgObj = msg: "_#{@convertSlackMessageToRocketChat(message.text)}_" _.extend msgObj, msgDataDefaults - RocketChat.sendMessage @getRocketUser(message.user), msgObj, room + RocketChat.sendMessage @getRocketUser(message.user), msgObj, room, true else if message.subtype is 'bot_message' botUser = RocketChat.models.Users.findOneById 'rocket.cat', { fields: { username: 1 }} botUsername = if @bots[message.bot_id] then @bots[message.bot_id]?.name else message.username @@ -245,7 +245,7 @@ Importer.Slack = class Importer.Slack extends Importer.Base if message.icons? msgObj.emoji = message.icons.emoji - RocketChat.sendMessage botUser, msgObj, room, upsert: true + RocketChat.sendMessage botUser, msgObj, room, true else if message.subtype is 'channel_purpose' RocketChat.models.Messages.createRoomSettingsChangedWithTypeRoomIdMessageAndUser 'room_changed_topic', room._id, message.purpose, @getRocketUser(message.user), msgDataDefaults else if message.subtype is 'channel_topic' @@ -291,7 +291,7 @@ Importer.Slack = class Importer.Slack extends Importer.Base if message.edited? msgObj.ets = new Date(parseInt(message.edited.ts.split('.')[0]) * 1000) - RocketChat.sendMessage @getRocketUser(message.user), msgObj, room, upsert: true + RocketChat.sendMessage @getRocketUser(message.user), msgObj, room, true @addCountCompleted 1 console.log missedTypes @updateProgress Importer.ProgressStep.FINISHING diff --git a/packages/rocketchat-importer/server/classes/ImporterBase.coffee b/packages/rocketchat-importer/server/classes/ImporterBase.coffee index 3bdd9080bcb..6b49637e6fe 100644 --- a/packages/rocketchat-importer/server/classes/ImporterBase.coffee +++ b/packages/rocketchat-importer/server/classes/ImporterBase.coffee @@ -193,7 +193,7 @@ Importer.Base = class Importer.Base if details.message_id? and (typeof details.message_id is 'string') msg['_id'] = details.message_id - RocketChat.sendMessage user, msg, room + RocketChat.sendMessage user, msg, room, true else @logger.error "Failed to create the store for #{fileUrl}!!!" ) diff --git a/packages/rocketchat-integrations/server/processWebhookMessage.js b/packages/rocketchat-integrations/server/processWebhookMessage.js index c8094d4e3c8..5a7f7cd4e4f 100644 --- a/packages/rocketchat-integrations/server/processWebhookMessage.js +++ b/packages/rocketchat-integrations/server/processWebhookMessage.js @@ -106,7 +106,7 @@ this.processWebhookMessage = function(messageObj, user, defaultValues) { } } - var messageReturn = RocketChat.sendMessage(user, message, room, {}); + var messageReturn = RocketChat.sendMessage(user, message, room); ret.push({ channel: channel, message: messageReturn }); } return ret; diff --git a/packages/rocketchat-lib/server/functions/sendMessage.coffee b/packages/rocketchat-lib/server/functions/sendMessage.coffee index 063968cc72a..e652f89f179 100644 --- a/packages/rocketchat-lib/server/functions/sendMessage.coffee +++ b/packages/rocketchat-lib/server/functions/sendMessage.coffee @@ -1,4 +1,4 @@ -RocketChat.sendMessage = (user, message, room) -> +RocketChat.sendMessage = (user, message, room, upsert = false) -> if not user or not message or not room._id return false @@ -18,7 +18,7 @@ RocketChat.sendMessage = (user, message, room) -> message = RocketChat.callbacks.run 'beforeSaveMessage', message - if message._id? + if message._id? and upsert _id = message._id delete message._id RocketChat.models.Messages.upsert {_id: _id, 'u._id': message.u._id}, message diff --git a/packages/rocketchat-slackbridge/slackbridge.js b/packages/rocketchat-slackbridge/slackbridge.js index d0aee870c28..cc52c7d9766 100644 --- a/packages/rocketchat-slackbridge/slackbridge.js +++ b/packages/rocketchat-slackbridge/slackbridge.js @@ -225,7 +225,7 @@ class SlackBridge { if (message.subtype === 'bot_message') { user = RocketChat.models.Users.findOneById('rocket.cat', { fields: { username: 1 } }); } - RocketChat.sendMessage(user, msgObj, room, { upsert: true }); + RocketChat.sendMessage(user, msgObj, room); } }