From 865eb9c5647b380fb482a72c22ab6967bfcb9aa1 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo <guilhermegazzo@gmail.com> Date: Thu, 23 Mar 2017 17:18:32 -0300 Subject: [PATCH] converted rocketchat-message-mark-as-unread coffee/js (#6445) * converted rocketchat-message-mark-as-unread coffee/js * fix revision * Update actionButton.js --- .../client/actionButton.coffee | 23 -------------- .../client/actionButton.js | 29 ++++++++++++++++++ .../package.js | 7 ++--- .../server/logger.js | 6 ++-- .../server/unreadMessages.coffee | 19 ------------ .../server/unreadMessages.js | 30 +++++++++++++++++++ 6 files changed, 63 insertions(+), 51 deletions(-) delete mode 100644 packages/rocketchat-message-mark-as-unread/client/actionButton.coffee create mode 100644 packages/rocketchat-message-mark-as-unread/client/actionButton.js delete mode 100644 packages/rocketchat-message-mark-as-unread/server/unreadMessages.coffee create mode 100644 packages/rocketchat-message-mark-as-unread/server/unreadMessages.js diff --git a/packages/rocketchat-message-mark-as-unread/client/actionButton.coffee b/packages/rocketchat-message-mark-as-unread/client/actionButton.coffee deleted file mode 100644 index 3dec96d2ccd..00000000000 --- a/packages/rocketchat-message-mark-as-unread/client/actionButton.coffee +++ /dev/null @@ -1,23 +0,0 @@ -Meteor.startup -> - RocketChat.MessageAction.addButton - id: 'mark-message-as-unread' - icon: 'icon-flag' - i18nLabel: 'Mark_as_unread' - context: [ - 'message' - 'message-mobile' - ] - action: (event, instance) -> - message = @_arguments[1] - RocketChat.MessageAction.hideDropDown() - Meteor.call 'unreadMessages', message, (error, result) -> - if error - return handleError(error) - subscription = ChatSubscription.findOne rid: message.rid - if not subscription? - return - RoomManager.close subscription.t + subscription.name - FlowRouter.go('home') - validation: (message) -> - return message.u._id isnt Meteor.user()._id - order: 22 diff --git a/packages/rocketchat-message-mark-as-unread/client/actionButton.js b/packages/rocketchat-message-mark-as-unread/client/actionButton.js new file mode 100644 index 00000000000..0cdb0b54cb2 --- /dev/null +++ b/packages/rocketchat-message-mark-as-unread/client/actionButton.js @@ -0,0 +1,29 @@ +Meteor.startup(() => { + return RocketChat.MessageAction.addButton({ + id: 'mark-message-as-unread', + icon: 'icon-flag', + i18nLabel: 'Mark_as_unread', + context: ['message', 'message-mobile'], + action() { + const message = this._arguments[1]; + RocketChat.MessageAction.hideDropDown(); + return Meteor.call('unreadMessages', message, function(error) { + if (error) { + return handleError(error); + } + const subscription = ChatSubscription.findOne({ + rid: message.rid + }); + if (subscription == null) { + return; + } + RoomManager.close(subscription.t + subscription.name); + return FlowRouter.go('home'); + }); + }, + validation(message) { + return message.u._id !== Meteor.user()._id; + }, + order: 22 + }); +}); diff --git a/packages/rocketchat-message-mark-as-unread/package.js b/packages/rocketchat-message-mark-as-unread/package.js index 36da7db18ff..fd2d458d114 100644 --- a/packages/rocketchat-message-mark-as-unread/package.js +++ b/packages/rocketchat-message-mark-as-unread/package.js @@ -6,10 +6,7 @@ Package.describe({ Package.onUse(function(api) { api.use([ - 'coffeescript', 'ecmascript', - 'underscore', - 'less', 'rocketchat:lib', 'rocketchat:logger', 'rocketchat:ui' @@ -18,11 +15,11 @@ Package.onUse(function(api) { api.use('templating', 'client'); api.addFiles([ - 'client/actionButton.coffee' + 'client/actionButton.js' ], 'client'); api.addFiles([ 'server/logger.js', - 'server/unreadMessages.coffee' + 'server/unreadMessages.js' ], 'server'); }); diff --git a/packages/rocketchat-message-mark-as-unread/server/logger.js b/packages/rocketchat-message-mark-as-unread/server/logger.js index a1a5b63fe34..2e92f980640 100644 --- a/packages/rocketchat-message-mark-as-unread/server/logger.js +++ b/packages/rocketchat-message-mark-as-unread/server/logger.js @@ -1,9 +1,7 @@ -/* globals logger:true */ -/* exported logger */ - -logger = new Logger('MessageMarkAsUnread', { +const logger = new Logger('MessageMarkAsUnread', { sections: { connection: 'Connection', events: 'Events' } }); +export default logger; diff --git a/packages/rocketchat-message-mark-as-unread/server/unreadMessages.coffee b/packages/rocketchat-message-mark-as-unread/server/unreadMessages.coffee deleted file mode 100644 index 9c1cf55d66f..00000000000 --- a/packages/rocketchat-message-mark-as-unread/server/unreadMessages.coffee +++ /dev/null @@ -1,19 +0,0 @@ -Meteor.methods - unreadMessages: (firstUnreadMessage) -> - if not Meteor.userId() - throw new Meteor.Error 'error-invalid-user', 'Invalid user', { method: 'unreadMessages' } - - originalMessage = RocketChat.models.Messages.findOneById firstUnreadMessage._id, {fields: {u: 1, rid: 1, file: 1, ts: 1}} - if not originalMessage? - throw new Meteor.Error 'error-action-not-allowed', 'Not allowed', { method: 'unreadMessages', action: 'Unread_messages' } - - if Meteor.userId() is originalMessage.u._id - throw new Meteor.Error 'error-action-not-allowed', 'Not allowed', { method: 'unreadMessages', action: 'Unread_messages' } - - lastSeen = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(originalMessage.rid, Meteor.userId()).ls - if firstUnreadMessage.ts >= lastSeen - logger.connection.debug('Provided message is already marked as unread') - return - - logger.connection.debug('Updating unread message of ' + originalMessage.ts + ' as the first unread') - RocketChat.models.Subscriptions.setAsUnreadByRoomIdAndUserId(originalMessage.rid, Meteor.userId(), originalMessage.ts) diff --git a/packages/rocketchat-message-mark-as-unread/server/unreadMessages.js b/packages/rocketchat-message-mark-as-unread/server/unreadMessages.js new file mode 100644 index 00000000000..befaab73f6d --- /dev/null +++ b/packages/rocketchat-message-mark-as-unread/server/unreadMessages.js @@ -0,0 +1,30 @@ +import logger from './logger'; +Meteor.methods({ + unreadMessages(firstUnreadMessage) { + if (!Meteor.userId()) { + throw new Meteor.Error('error-invalid-user', 'Invalid user', { + method: 'unreadMessages' + }); + } + const originalMessage = RocketChat.models.Messages.findOneById(firstUnreadMessage._id, { + fields: { + u: 1, + rid: 1, + file: 1, + ts: 1 + } + }); + if (originalMessage == null || Meteor.userId() === originalMessage.u._id) { + throw new Meteor.Error('error-action-not-allowed', 'Not allowed', { + method: 'unreadMessages', + action: 'Unread_messages' + }); + } + const lastSeen = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(originalMessage.rid, Meteor.userId()).ls; + if (firstUnreadMessage.ts >= lastSeen) { + return logger.connection.debug('Provided message is already marked as unread'); + } + logger.connection.debug('Updating unread message of ' + originalMessage.ts + ' as the first unread'); + return RocketChat.models.Subscriptions.setAsUnreadByRoomIdAndUserId(originalMessage.rid, Meteor.userId(), originalMessage.ts); + } +}); -- GitLab