From b52adb07504b4d3fe24f77e8136037678a149822 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Thu, 13 Apr 2017 17:37:45 -0300 Subject: [PATCH 1/2] convert mentions-flextab to js --- .../client/actionButton.coffee | 17 ----- .../client/actionButton.js | 17 +++++ .../client/lib/MentionedMessage.coffee | 1 - .../client/lib/MentionedMessage.js | 1 + .../client/{tabBar.coffee => tabBar.js} | 7 +- .../client/views/mentionsFlexTab.coffee | 39 ----------- .../client/views/mentionsFlexTab.js | 66 +++++++++++++++++++ .../rocketchat-mentions-flextab/package.js | 10 +-- .../publications/mentionedMessages.coffee | 25 ------- .../server/publications/mentionedMessages.js | 35 ++++++++++ 10 files changed, 128 insertions(+), 90 deletions(-) delete mode 100644 packages/rocketchat-mentions-flextab/client/actionButton.coffee create mode 100644 packages/rocketchat-mentions-flextab/client/actionButton.js delete mode 100644 packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.coffee create mode 100644 packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.js rename packages/rocketchat-mentions-flextab/client/{tabBar.coffee => tabBar.js} (64%) delete mode 100644 packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.coffee create mode 100644 packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js delete mode 100644 packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.coffee create mode 100644 packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js diff --git a/packages/rocketchat-mentions-flextab/client/actionButton.coffee b/packages/rocketchat-mentions-flextab/client/actionButton.coffee deleted file mode 100644 index 84d350c96809..000000000000 --- a/packages/rocketchat-mentions-flextab/client/actionButton.coffee +++ /dev/null @@ -1,17 +0,0 @@ -Meteor.startup -> - RocketChat.MessageAction.addButton - id: 'jump-to-message' - icon: 'icon-right-hand' - i18nLabel: 'Jump_to_message' - context: [ - 'mentions' - ] - action: (event, instance) -> - message = @_arguments[1] - RocketChat.MessageAction.hideDropDown() - RoomHistoryManager.getSurroundingMessages(message, 50) - - validation: (message) -> - return message.mentionedList is true - - order: 100 diff --git a/packages/rocketchat-mentions-flextab/client/actionButton.js b/packages/rocketchat-mentions-flextab/client/actionButton.js new file mode 100644 index 000000000000..9f2335693637 --- /dev/null +++ b/packages/rocketchat-mentions-flextab/client/actionButton.js @@ -0,0 +1,17 @@ +Meteor.startup(function() { + return RocketChat.MessageAction.addButton({ + id: 'jump-to-message', + icon: 'icon-right-hand', + i18nLabel: 'Jump_to_message', + context: ['mentions'], + action() { + const message = this._arguments[1]; + RocketChat.MessageAction.hideDropDown(); + return RoomHistoryManager.getSurroundingMessages(message, 50); + }, + validation(message) { + return message.mentionedList === true; + }, + order: 100 + }); +}); diff --git a/packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.coffee b/packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.coffee deleted file mode 100644 index 98325aa643a8..000000000000 --- a/packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.coffee +++ /dev/null @@ -1 +0,0 @@ -@MentionedMessage = new Mongo.Collection 'rocketchat_mentioned_message' diff --git a/packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.js b/packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.js new file mode 100644 index 000000000000..fffbdd257eba --- /dev/null +++ b/packages/rocketchat-mentions-flextab/client/lib/MentionedMessage.js @@ -0,0 +1 @@ +this.MentionedMessage = new Mongo.Collection('rocketchat_mentioned_message'); diff --git a/packages/rocketchat-mentions-flextab/client/tabBar.coffee b/packages/rocketchat-mentions-flextab/client/tabBar.js similarity index 64% rename from packages/rocketchat-mentions-flextab/client/tabBar.coffee rename to packages/rocketchat-mentions-flextab/client/tabBar.js index 70b75724e52f..272b29ede315 100644 --- a/packages/rocketchat-mentions-flextab/client/tabBar.coffee +++ b/packages/rocketchat-mentions-flextab/client/tabBar.js @@ -1,9 +1,10 @@ -Meteor.startup -> - RocketChat.TabBar.addButton({ +Meteor.startup(function() { + return RocketChat.TabBar.addButton({ groups: ['channel', 'group'], id: 'mentions', i18nTitle: 'Mentions', icon: 'icon-at', template: 'mentionsFlexTab', order: 3 - }) + }); +}); diff --git a/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.coffee b/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.coffee deleted file mode 100644 index 0d6fab788374..000000000000 --- a/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.coffee +++ /dev/null @@ -1,39 +0,0 @@ -Template.mentionsFlexTab.helpers - hasMessages: -> - return MentionedMessage.find({ rid: @rid }, { sort: { ts: -1 } }).count() > 0 - - messages: -> - return MentionedMessage.find { rid: @rid }, { sort: { ts: -1 } } - - message: -> - return _.extend(this, { customClass: 'mentions' }) - - hasMore: -> - return Template.instance().hasMore.get() - -Template.mentionsFlexTab.onCreated -> - @hasMore = new ReactiveVar true - @limit = new ReactiveVar 50 - @autorun => - @subscribe 'mentionedMessages', @data.rid, @limit.get(), => - if MentionedMessage.find({ rid: @data.rid }).count() < @limit.get() - @hasMore.set false - -Template.mentionsFlexTab.events - 'click .message-cog': (e, t) -> - e.stopPropagation() - e.preventDefault() - message_id = $(e.currentTarget).closest('.message').attr('id') - RocketChat.MessageAction.hideDropDown() - t.$("\##{message_id} .message-dropdown").remove() - message = MentionedMessage.findOne message_id - actions = RocketChat.MessageAction.getButtons message, 'mentions' - el = Blaze.toHTMLWithData Template.messageDropdown, { actions: actions } - t.$("\##{message_id} .message-cog-container").append el - dropDown = t.$("\##{message_id} .message-dropdown") - dropDown.show() - - 'scroll .content': _.throttle (e, instance) -> - if e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight && instance.hasMore.get() - instance.limit.set(instance.limit.get() + 50) - , 200 diff --git a/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js b/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js new file mode 100644 index 000000000000..3a81feab4322 --- /dev/null +++ b/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js @@ -0,0 +1,66 @@ +/*globals MentionedMessage */ +Template.mentionsFlexTab.helpers({ + hasMessages() { + return MentionedMessage.find({ + rid: this.rid + }, { + sort: { + ts: -1 + } + }).count() > 0; + }, + messages() { + return MentionedMessage.find({ + rid: this.rid + }, { + sort: { + ts: -1 + } + }); + }, + message() { + return _.extend(this, { + customClass: 'mentions' + }); + }, + hasMore() { + return Template.instance().hasMore.get(); + } +}); + +Template.mentionsFlexTab.onCreated(function() { + this.hasMore = new ReactiveVar(true); + this.limit = new ReactiveVar(50); + return this.autorun(() => { + return this.subscribe('mentionedMessages', this.data.rid, this.limit.get(), function() { + if (MentionedMessage.find({ + rid: this.data.rid + }).count() < this.limit.get()) { + return this.hasMore.set(false); + } + }); + }); +}); + +Template.mentionsFlexTab.events({ + 'click .message-cog'(e, t) { + e.stopPropagation(); + e.preventDefault(); + const message_id = $(e.currentTarget).closest('.message').attr('id'); + RocketChat.MessageAction.hideDropDown(); + t.$(`\#${ message_id } .message-dropdown`).remove(); + const message = MentionedMessage.findOne(message_id); + const actions = RocketChat.MessageAction.getButtons(message, 'mentions'); + const el = Blaze.toHTMLWithData(Template.messageDropdown, { + actions + }); + t.$(`\#${ message_id } .message-cog-container`).append(el); + const dropDown = t.$(`\#${ message_id } .message-dropdown`); + return dropDown.show(); + }, + 'scroll .content': _.throttle(function(e, instance) { + if (e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight && instance.hasMore.get()) { + return instance.limit.set(instance.limit.get() + 50); + } + }, 200) +}); diff --git a/packages/rocketchat-mentions-flextab/package.js b/packages/rocketchat-mentions-flextab/package.js index 127ecc9f6997..778bcfbd1651 100644 --- a/packages/rocketchat-mentions-flextab/package.js +++ b/packages/rocketchat-mentions-flextab/package.js @@ -18,15 +18,15 @@ Package.onUse(function(api) { api.use('templating', 'client'); api.addFiles([ - 'client/lib/MentionedMessage.coffee', + 'client/lib/MentionedMessage.js', 'client/views/stylesheets/mentionsFlexTab.less', 'client/views/mentionsFlexTab.html', - 'client/views/mentionsFlexTab.coffee', - 'client/actionButton.coffee', - 'client/tabBar.coffee' + 'client/views/mentionsFlexTab.js', + 'client/actionButton.js', + 'client/tabBar.js' ], 'client'); api.addFiles([ - 'server/publications/mentionedMessages.coffee' + 'server/publications/mentionedMessages.js' ], 'server'); }); diff --git a/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.coffee b/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.coffee deleted file mode 100644 index 72a557e2df85..000000000000 --- a/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.coffee +++ /dev/null @@ -1,25 +0,0 @@ -Meteor.publish 'mentionedMessages', (rid, limit=50) -> - unless this.userId - return this.ready() - - publication = @ - - user = RocketChat.models.Users.findOneById this.userId - unless user - return this.ready() - - cursorHandle = RocketChat.models.Messages.findVisibleByMentionAndRoomId(user.username, rid, { sort: { ts: -1 }, limit: limit }).observeChanges - added: (_id, record) -> - record.mentionedList = true - publication.added('rocketchat_mentioned_message', _id, record) - - changed: (_id, record) -> - record.mentionedList = true - publication.changed('rocketchat_mentioned_message', _id, record) - - removed: (_id) -> - publication.removed('rocketchat_mentioned_message', _id) - - @ready() - @onStop -> - cursorHandle.stop() diff --git a/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js b/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js new file mode 100644 index 000000000000..cdade6d59d9b --- /dev/null +++ b/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js @@ -0,0 +1,35 @@ +Meteor.publish('mentionedMessages', function(rid, limit) { + if (limit == null) { + limit = 50; + } + if (!this.userId) { + return this.ready(); + } + const publication = this; + const user = RocketChat.models.Users.findOneById(this.userId); + if (!user) { + return this.ready(); + } + const cursorHandle = RocketChat.models.Messages.findVisibleByMentionAndRoomId(user.username, rid, { + sort: { + ts: -1 + }, + limit + }).observeChanges({ + added(_id, record) { + record.mentionedList = true; + return publication.added('rocketchat_mentioned_message', _id, record); + }, + changed(_id, record) { + record.mentionedList = true; + return publication.changed('rocketchat_mentioned_message', _id, record); + }, + removed(_id) { + return publication.removed('rocketchat_mentioned_message', _id); + } + }); + this.ready(); + return this.onStop(function() { + return cursorHandle.stop(); + }); +}); From bb19692bcc70fce54f8c7d5d85c2cda4efbfa6d5 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Thu, 20 Apr 2017 15:12:47 -0300 Subject: [PATCH 2/2] fix reviews --- .../client/views/mentionsFlexTab.js | 7 +++---- packages/rocketchat-mentions-flextab/package.js | 1 - .../server/publications/mentionedMessages.js | 5 +---- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js b/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js index 3a81feab4322..a929120d1595 100644 --- a/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js +++ b/packages/rocketchat-mentions-flextab/client/views/mentionsFlexTab.js @@ -32,10 +32,9 @@ Template.mentionsFlexTab.onCreated(function() { this.hasMore = new ReactiveVar(true); this.limit = new ReactiveVar(50); return this.autorun(() => { - return this.subscribe('mentionedMessages', this.data.rid, this.limit.get(), function() { - if (MentionedMessage.find({ - rid: this.data.rid - }).count() < this.limit.get()) { + const mentionedMessageFind = MentionedMessage.find({ rid: this.data.rid }); + return this.subscribe('mentionedMessages', this.data.rid, this.limit.get(), () => { + if (mentionedMessageFind.count() < this.limit.get()) { return this.hasMore.set(false); } }); diff --git a/packages/rocketchat-mentions-flextab/package.js b/packages/rocketchat-mentions-flextab/package.js index 778bcfbd1651..4f38223f73ae 100644 --- a/packages/rocketchat-mentions-flextab/package.js +++ b/packages/rocketchat-mentions-flextab/package.js @@ -9,7 +9,6 @@ Package.onUse(function(api) { api.use([ 'mongo', 'ecmascript', - 'coffeescript', 'underscore', 'less', 'rocketchat:lib' diff --git a/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js b/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js index cdade6d59d9b..994454f9fd86 100644 --- a/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js +++ b/packages/rocketchat-mentions-flextab/server/publications/mentionedMessages.js @@ -1,7 +1,4 @@ -Meteor.publish('mentionedMessages', function(rid, limit) { - if (limit == null) { - limit = 50; - } +Meteor.publish('mentionedMessages', function(rid, limit = 50) { if (!this.userId) { return this.ready(); }