diff --git a/lib/fileUpload.coffee b/lib/fileUpload.coffee index e69606b1430ce7e217ac5ff0d94d3e22ef2996ba..dd526dc7ce49d5eafce9c2e6254a812704ad952c 100644 --- a/lib/fileUpload.coffee +++ b/lib/fileUpload.coffee @@ -14,6 +14,7 @@ if FS? """ file: _id: fileObj._id + , {upsert: true} @Files = new FS.Collection 'Files', stores: [fileStore], diff --git a/packages/rocketchat-lib/server/sendMessage.coffee b/packages/rocketchat-lib/server/sendMessage.coffee index bbe7f5a09a8e885639c9e71ab71700481a0996b2..4c48a7214845a1dbd876b3d745be38196bd70409 100644 --- a/packages/rocketchat-lib/server/sendMessage.coffee +++ b/packages/rocketchat-lib/server/sendMessage.coffee @@ -1,4 +1,4 @@ -RocketChat.sendMessage = (user, message, room) -> +RocketChat.sendMessage = (user, message, room, options) -> if not user or not message or not room._id return false @@ -15,7 +15,10 @@ RocketChat.sendMessage = (user, message, room) -> message = RocketChat.callbacks.run 'beforeSaveMessage', message - message._id = ChatMessage.insert message + if message._id? and options?.upsert is true + ChatMessage.upsert {_id: message._id}, message + else + message._id = ChatMessage.insert message ### Defer other updates as their return is not interesting to the user diff --git a/server/methods/sendMessage.coffee b/server/methods/sendMessage.coffee index fe3d1064a582ecefbece7b63dc0ddb5536920a64..85d9f878889a660988a03344668429d72394cb44 100644 --- a/server/methods/sendMessage.coffee +++ b/server/methods/sendMessage.coffee @@ -1,5 +1,5 @@ Meteor.methods - sendMessage: (message) -> + sendMessage: (message, options) -> if message.msg?.length > RocketChat.settings.get('Message_MaxAllowedSize') throw new Meteor.Error 400, '[methods] sendMessage -> Message size exceed Message_MaxAllowedSize' @@ -15,4 +15,4 @@ Meteor.methods if not room return false - RocketChat.sendMessage user, message, room + RocketChat.sendMessage user, message, room, options