Allow simpler pinning and unpinning via the methods, only require _id and rid.

pull/5087/head
Bradley Hilton 10 years ago
parent 86b6c42606
commit f16db8ee47
  1. 40
      packages/rocketchat-message-pin/server/pinMessage.coffee

@ -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 ->

Loading…
Cancel
Save