From f16db8ee471d46a3e2e9df5164df22e97f6d4b74 Mon Sep 17 00:00:00 2001 From: Bradley Hilton Date: Thu, 1 Dec 2016 11:05:31 -0600 Subject: [PATCH] Allow simpler pinning and unpinning via the methods, only require _id and rid. --- .../server/pinMessage.coffee | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/packages/rocketchat-message-pin/server/pinMessage.coffee b/packages/rocketchat-message-pin/server/pinMessage.coffee index faa73ce5797..f2049c58465 100644 --- a/packages/rocketchat-message-pin/server/pinMessage.coffee +++ b/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 ->