|
|
|
|
@ -11,28 +11,33 @@ Meteor.methods |
|
|
|
|
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1 |
|
|
|
|
return false |
|
|
|
|
|
|
|
|
|
originalMessage = RocketChat.models.Messages.findOneById message._id |
|
|
|
|
|
|
|
|
|
if not originalMessage?._id? |
|
|
|
|
throw new Meteor.Error 'error-invalid-message', 'Message you are pinning was not found', { method: 'pinMessage', action: 'Message_pinning' } |
|
|
|
|
|
|
|
|
|
# If we keep history of edits, insert a new message to store history information |
|
|
|
|
if RocketChat.settings.get 'Message_KeepHistory' |
|
|
|
|
RocketChat.models.Messages.cloneAndSaveAsHistoryById message._id |
|
|
|
|
|
|
|
|
|
me = RocketChat.models.Users.findOneById Meteor.userId() |
|
|
|
|
|
|
|
|
|
message.pinned = true |
|
|
|
|
message.pinnedAt = pinnedAt || Date.now |
|
|
|
|
message.pinnedBy = |
|
|
|
|
originalMessage.pinned = true |
|
|
|
|
originalMessage.pinnedAt = pinnedAt || Date.now |
|
|
|
|
originalMessage.pinnedBy = |
|
|
|
|
_id: Meteor.userId() |
|
|
|
|
username: me.username |
|
|
|
|
|
|
|
|
|
message = RocketChat.callbacks.run 'beforeSaveMessage', message |
|
|
|
|
originalMessage = RocketChat.callbacks.run 'beforeSaveMessage', originalMessage |
|
|
|
|
|
|
|
|
|
RocketChat.models.Messages.setPinnedByIdAndUserId message._id, message.pinnedBy, message.pinned |
|
|
|
|
RocketChat.models.Messages.setPinnedByIdAndUserId originalMessage._id, originalMessage.pinnedBy, originalMessage.pinned |
|
|
|
|
|
|
|
|
|
RocketChat.models.Messages.createWithTypeRoomIdMessageAndUser 'message_pinned', message.rid, '', me, |
|
|
|
|
RocketChat.models.Messages.createWithTypeRoomIdMessageAndUser 'message_pinned', originalMessage.rid, '', me, |
|
|
|
|
attachments: [ |
|
|
|
|
"text" : message.msg |
|
|
|
|
"author_name" : message.u.username, |
|
|
|
|
"author_icon" : getAvatarUrlFromUsername(message.u.username), |
|
|
|
|
"ts" : message.ts |
|
|
|
|
"text" : originalMessage.msg |
|
|
|
|
"author_name" : originalMessage.u.username, |
|
|
|
|
"author_icon" : getAvatarUrlFromUsername(originalMessage.u.username), |
|
|
|
|
"ts" : originalMessage.ts |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
unpinMessage: (message) -> |
|
|
|
|
@ -47,20 +52,25 @@ Meteor.methods |
|
|
|
|
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1 |
|
|
|
|
return false |
|
|
|
|
|
|
|
|
|
originalMessage = RocketChat.models.Messages.findOneById message._id |
|
|
|
|
|
|
|
|
|
if not originalMessage?._id? |
|
|
|
|
throw new Meteor.Error 'error-invalid-message', 'Message you are unpinning was not found', { method: 'unpinMessage', action: 'Message_pinning' } |
|
|
|
|
|
|
|
|
|
# If we keep history of edits, insert a new message to store history information |
|
|
|
|
if RocketChat.settings.get 'Message_KeepHistory' |
|
|
|
|
RocketChat.models.Messages.cloneAndSaveAsHistoryById message._id |
|
|
|
|
RocketChat.models.Messages.cloneAndSaveAsHistoryById originalMessage._id |
|
|
|
|
|
|
|
|
|
me = RocketChat.models.Users.findOneById Meteor.userId() |
|
|
|
|
|
|
|
|
|
message.pinned = false |
|
|
|
|
message.pinnedBy = |
|
|
|
|
originalMessage.pinned = false |
|
|
|
|
originalMessage.pinnedBy = |
|
|
|
|
_id: Meteor.userId() |
|
|
|
|
username: me.username |
|
|
|
|
|
|
|
|
|
message = RocketChat.callbacks.run 'beforeSaveMessage', message |
|
|
|
|
originalMessage = RocketChat.callbacks.run 'beforeSaveMessage', originalMessage |
|
|
|
|
|
|
|
|
|
RocketChat.models.Messages.setPinnedByIdAndUserId message._id, message.pinnedBy, message.pinned |
|
|
|
|
RocketChat.models.Messages.setPinnedByIdAndUserId originalMessage._id, originalMessage.pinnedBy, originalMessage.pinned |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Meteor.defer -> |
|
|
|
|
|