The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/client/methods/updateMessage.coffee

46 lines
1.4 KiB

Meteor.methods
updateMessage: (message) ->
if not Meteor.userId()
return false
originalMessage = ChatMessage.findOne message._id
hasPermission = RocketChat.authz.hasAtLeastOnePermission('edit-message', message.rid)
editAllowed = RocketChat.settings.get 'Message_AllowEditing'
editOwn = originalMessage?.u?._id is Meteor.userId()
me = Meteor.users.findOne Meteor.userId()
unless hasPermission or (editAllowed and editOwn)
toastr.error t('error-action-not-allowed', { action: t('Message_editing') })
return false
blockEditInMinutes = RocketChat.settings.get 'Message_AllowEditing_BlockEditInMinutes'
if blockEditInMinutes? and blockEditInMinutes isnt 0
msgTs = moment(originalMessage.ts) if originalMessage.ts?
currentTsDiff = moment().diff(msgTs, 'minutes') if msgTs?
if currentTsDiff > blockEditInMinutes
toastr.error t('error-message-editing-blocked')
return false
Tracker.nonreactive ->
if isNaN(TimeSync.serverOffset())
message.editedAt = new Date()
else
message.editedAt = new Date(Date.now() + TimeSync.serverOffset())
message.editedBy =
_id: Meteor.userId()
username: me.username
message = RocketChat.callbacks.run 'beforeSaveMessage', message
ChatMessage.update
_id: message._id
'u._id': Meteor.userId()
,
$set:
"editedAt": message.editedAt
"editedBy": message.editedBy
msg: message.msg