diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 93c9d4b602a..99e9acd1efb 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -868,6 +868,7 @@ "No_results_found": "No results found", "No_starred_messages": "No starred messages", "No_such_command": "No such command: `/__command__`", + "No_snippet_messages": "No snippet", "No_user_with_username_%s_was_found": "No user with username \"%s\" was found!", "Nobody_available": "Nobody available", "Node_version": "Node version", diff --git a/packages/rocketchat-lib/server/models/Messages.coffee b/packages/rocketchat-lib/server/models/Messages.coffee index 3a5cf087a9f..a0b79049b2d 100644 --- a/packages/rocketchat-lib/server/models/Messages.coffee +++ b/packages/rocketchat-lib/server/models/Messages.coffee @@ -191,7 +191,7 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base return @update query, update - setSnippetedByIdAndUserId: (message, snippetId, snippetedBy, snippeted=true, snippetedAt=0) -> + setSnippetedByIdAndUserId: (message, snippetName, snippetedBy, snippeted=true, snippetedAt=0) -> query = _id: message._id @@ -200,10 +200,10 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base update = $set: msg: msg - snippetId: snippetId snippeted: snippeted snippetedAt: snippetedAt || new Date snippetedBy: snippetedBy + snippetName: snippetName return @update query, update diff --git a/packages/rocketchat-message-snippet/client/actionButton.js b/packages/rocketchat-message-snippet/client/actionButton.js index 6399f67cc8c..5d08b46463a 100644 --- a/packages/rocketchat-message-snippet/client/actionButton.js +++ b/packages/rocketchat-message-snippet/client/actionButton.js @@ -2,7 +2,7 @@ Meteor.startup(function() { RocketChat.MessageAction.addButton({ id: 'snippeted-message', icon: 'icon-code', - i18nnLabel: 'Snippet', + i18nLabel: 'Snippet', context: [ 'snippeted', 'message', diff --git a/packages/rocketchat-message-snippet/client/lib/collections.js b/packages/rocketchat-message-snippet/client/lib/collections.js index cbb96f1cc16..0705636fdd9 100644 --- a/packages/rocketchat-message-snippet/client/lib/collections.js +++ b/packages/rocketchat-message-snippet/client/lib/collections.js @@ -1,2 +1 @@ -this.SnippetedMessage = new Meteor.Collection('rocketchat_snippeted_message'); this.Messages = new Meteor.Collection('rocketchat_message'); diff --git a/packages/rocketchat-message-snippet/client/messageType.js b/packages/rocketchat-message-snippet/client/messageType.js index 6828b74ee7d..ff6c0d796c8 100644 --- a/packages/rocketchat-message-snippet/client/messageType.js +++ b/packages/rocketchat-message-snippet/client/messageType.js @@ -4,7 +4,7 @@ Meteor.startup(function() { system: true, message: 'Snippeted_a_message', data: function(message) { - let snippetLink = `${message.filename}`; + let snippetLink = `${message.snippetName}`; return { snippetLink: snippetLink }; } }); diff --git a/packages/rocketchat-message-snippet/client/page/snippetPage.html b/packages/rocketchat-message-snippet/client/page/snippetPage.html index c9f41d7e8e2..4dba82f8c3b 100644 --- a/packages/rocketchat-message-snippet/client/page/snippetPage.html +++ b/packages/rocketchat-message-snippet/client/page/snippetPage.html @@ -3,7 +3,7 @@
{{> avatar username=snippet.u.username}} {{snippet.u.username}} - {{ snippet.filename }} + {{ snippet.snippetName }}
diff --git a/packages/rocketchat-message-snippet/client/page/snippetPage.js b/packages/rocketchat-message-snippet/client/page/snippetPage.js index d4f6f71572c..3fbfdd12915 100644 --- a/packages/rocketchat-message-snippet/client/page/snippetPage.js +++ b/packages/rocketchat-message-snippet/client/page/snippetPage.js @@ -1,10 +1,10 @@ -/* global SnippetedMessage, Messages */ +/* global Messages */ Template.snippetPage.helpers({ snippet: function() { - return SnippetedMessage.findOne({ _id: FlowRouter.getParam('snippetId') }); + return Messages.findOne({ _id: FlowRouter.getParam('snippetId') }); }, snippetContent: function() { - let message = Messages.findOne({snippetId: FlowRouter.getParam('snippetId')}); + let message = Messages.findOne({ _id: FlowRouter.getParam('snippetId') }); if (message === undefined) { return null; } else { @@ -13,24 +13,14 @@ Template.snippetPage.helpers({ return markdownCode.tokens[0].text; } }, - own() { - let snippet = SnippetedMessage.findOne({ _id: FlowRouter.getParam('snippetId') }); - if (snippet !== undefined && - snippet.u !== undefined && - snippet.u._id === Meteor.userId()) { - return 'own'; - } - return null; - }, date() { - let snippet = SnippetedMessage.findOne({ _id: FlowRouter.getParam('snippetId') }); + let snippet = Messages.findOne({ _id: FlowRouter.getParam('snippetId') }); if (snippet !== undefined) { - console.log(snippet.ts); return moment(snippet.ts).format(RocketChat.settings.get('Message_DateFormat')); } }, time() { - let snippet = SnippetedMessage.findOne({ _id: FlowRouter.getParam('snippetId') }); + let snippet = Messages.findOne({ _id: FlowRouter.getParam('snippetId') }); if (snippet !== undefined) { return moment(snippet.ts).format(RocketChat.settings.get('Message_TimeFormat')); } @@ -38,10 +28,10 @@ Template.snippetPage.helpers({ }); Template.snippetPage.onCreated(function() { + let snippetId = FlowRouter.getParam('snippetId'); + console.log(`${snippetId}: ${this.snippet}`); this.autorun(function() { - let snippetId = FlowRouter.getParam('snippetId'); - Meteor.subscribe('retrieveSnippetedMessage', snippetId); - Meteor.subscribe('retrieveSnippetMessage', snippetId); + Meteor.subscribe('snippetedMessage', snippetId); }); }); diff --git a/packages/rocketchat-message-snippet/client/tabBar/views/snippetMessage.js b/packages/rocketchat-message-snippet/client/tabBar/views/snippetMessage.js index 5a171e482eb..c0106c72fe8 100644 --- a/packages/rocketchat-message-snippet/client/tabBar/views/snippetMessage.js +++ b/packages/rocketchat-message-snippet/client/tabBar/views/snippetMessage.js @@ -11,6 +11,6 @@ Template.snippetMessage.helpers({ } }, body: function() { - return `${this.filename}`; + return `${this.snippetName}`; } }); diff --git a/packages/rocketchat-message-snippet/client/tabBar/views/snippetedMessages.js b/packages/rocketchat-message-snippet/client/tabBar/views/snippetedMessages.js index 52209e8e469..129dd550643 100644 --- a/packages/rocketchat-message-snippet/client/tabBar/views/snippetedMessages.js +++ b/packages/rocketchat-message-snippet/client/tabBar/views/snippetedMessages.js @@ -1,10 +1,10 @@ -/* global SnippetedMessage */ +/* global Messages */ Template.snippetedMessages.helpers({ hasMessages() { - return SnippetedMessage.find({ rid: this.rid }, { sort: { ts: -1 } }).count() > 0; + return Messages.find({ snippeted:true, rid: this.rid }, { sort: { ts: -1 } }).count() > 0; }, messages() { - return SnippetedMessage.find({ rid: this.rid }, { sort: { ts: -1 } }); + return Messages.find({ snippeted: true, rid: this.rid }, { sort: { ts: -1 } }); }, message() { return _.extend(this, { customClass: 'snippeted' }); @@ -21,7 +21,7 @@ Template.snippetedMessages.onCreated(function() { this.autorun(function() { let data = Template.currentData(); self.subscribe('snippetedMessages', data.rid, self.limit.get(), function() { - if (SnippetedMessage.find({rid: data.rid}).count() < self.limit.get()) { + if (Messages.find({ snippeted: true, rid: data.rid }).count() < self.limit.get()) { return self.hasMore.set(false); } }); diff --git a/packages/rocketchat-message-snippet/package.js b/packages/rocketchat-message-snippet/package.js index 22e43947fa9..2b42fb1cb43 100644 --- a/packages/rocketchat-message-snippet/package.js +++ b/packages/rocketchat-message-snippet/package.js @@ -30,11 +30,9 @@ Package.onUse(function(api) { api.addFiles([ 'server/startup/settings.js', 'server/startup/message-snippet.js', - 'server/models/SnippetMessage.js', 'server/methods/snippetMessage.js', 'server/publications/snippetedMessagesByRoom.js', - 'server/publications/snippetMessage.js', - 'server/publications/retrieveSnippetedMessage.js' + 'server/publications/snippetedMessage.js' ], 'server'); // Client diff --git a/packages/rocketchat-message-snippet/server/methods/snippetMessage.js b/packages/rocketchat-message-snippet/server/methods/snippetMessage.js index 13b2091eddb..c954b452e4d 100644 --- a/packages/rocketchat-message-snippet/server/methods/snippetMessage.js +++ b/packages/rocketchat-message-snippet/server/methods/snippetMessage.js @@ -22,10 +22,6 @@ Meteor.methods({ RocketChat.models.Messages.cloneAndSaveAsHistoryById(message._id); } - // Detect extension - let fileNameSplits = filename.split('.'); - let extension = fileNameSplits[fileNameSplits.length - 1]; - let me = RocketChat.models.Users.findOneById(Meteor.userId()); message.snippeted = true; @@ -43,26 +39,10 @@ Meteor.methods({ rs.pipe(ws); // Create the SnippetMessage - RocketChat.models.SnippetMessage.insert({ - rid: message.rid, - filename: filename, - extension: extension, - u: message.u, - ts: message.ts - }, function(error, _id) { - if (error !== undefined && error !== null) { - console.log(error); - } else { - message.snippedId = _id; - RocketChat.models.Messages.setSnippetedByIdAndUserId(message, message.snippedId, message.snippetedBy, - message.snippeted); - RocketChat.models.Messages.createWithTypeRoomIdMessageAndUser( - 'message_snippeted', message.rid, '', me, { - 'snippetId': _id, - 'filename': filename - }); - } - }); + RocketChat.models.Messages.setSnippetedByIdAndUserId(message, filename, message.snippetedBy, + message.snippeted, Date.now, filename); + RocketChat.models.Messages.createWithTypeRoomIdMessageAndUser( + 'message_snippeted', message.rid, '', me, { 'snippetId': message._id, 'snippetName': filename }); } }); diff --git a/packages/rocketchat-message-snippet/server/models/SnippetMessage.js b/packages/rocketchat-message-snippet/server/models/SnippetMessage.js deleted file mode 100644 index 83157fd8bc1..00000000000 --- a/packages/rocketchat-message-snippet/server/models/SnippetMessage.js +++ /dev/null @@ -1,27 +0,0 @@ -class SnippetMessage extends RocketChat.models._Base { - constructor() { - super('snippeted_message'); - - this.tryEnsureIndex({ 'name': 1 }); - this.tryEnsureIndex({ 'extension': 1}); - } - - findOneById(_id, options) { - return this.findOne(_id, options); - } - - findByRoomId(rid, options) { - return this.find({rid: rid}, options); - } - - setFileName(_id, name) { - let update = { - $set: { - filename: name - } - }; - return this.update({_id}, update); - } -} - -RocketChat.models.SnippetMessage = new SnippetMessage(); diff --git a/packages/rocketchat-message-snippet/server/publications/snippetMessage.js b/packages/rocketchat-message-snippet/server/publications/snippetMessage.js deleted file mode 100644 index fe50bcdb2a4..00000000000 --- a/packages/rocketchat-message-snippet/server/publications/snippetMessage.js +++ /dev/null @@ -1,37 +0,0 @@ -Meteor.publish('retrieveSnippetMessage', function(snippetId) { - let messageSnippetedCollection = 'rocketchat_snippeted_message'; - - if (typeof this.userId === 'undefined' || this.userId === null) { - return this.ready(); - } - - let publication = this; - - let user = RocketChat.models.Users.findOneById(this.userId); - - if (typeof user === 'undefined' || user === null) { - return this.ready(); - } - - let cursor = RocketChat.models.SnippetMessage.find( - { - _id: snippetId - } - ).observeChanges({ - added: function(_id, record) { - publication.added(messageSnippetedCollection, _id, record); - }, - changed: function(_id, record) { - publication.changed(messageSnippetedCollection, _id, record); - }, - removed: function(_id) { - publication.removed(messageSnippetedCollection, _id); - } - }); - - this.ready(); - - this.onStop = function() { - cursor.stop(); - }; -}); diff --git a/packages/rocketchat-message-snippet/server/publications/retrieveSnippetedMessage.js b/packages/rocketchat-message-snippet/server/publications/snippetedMessage.js similarity index 87% rename from packages/rocketchat-message-snippet/server/publications/retrieveSnippetedMessage.js rename to packages/rocketchat-message-snippet/server/publications/snippetedMessage.js index a7b0308a294..86737e29e72 100644 --- a/packages/rocketchat-message-snippet/server/publications/retrieveSnippetedMessage.js +++ b/packages/rocketchat-message-snippet/server/publications/snippetedMessage.js @@ -1,4 +1,4 @@ -Meteor.publish('retrieveSnippetedMessage', function(snippetId) { +Meteor.publish('snippetedMessage', function(_id) { if (typeof this.userId === 'undefined' || this.userId === null) { return this.ready(); } @@ -12,9 +12,7 @@ Meteor.publish('retrieveSnippetedMessage', function(snippetId) { } let cursor = RocketChat.models.Messages.find( - { - snippetId: snippetId - } + { '_id': _id } ).observeChanges({ added: function(_id, record) { publication.added('rocketchat_message', _id, record); diff --git a/packages/rocketchat-message-snippet/server/publications/snippetedMessagesByRoom.js b/packages/rocketchat-message-snippet/server/publications/snippetedMessagesByRoom.js index 6f21c809f30..34bafca9fc3 100644 --- a/packages/rocketchat-message-snippet/server/publications/snippetedMessagesByRoom.js +++ b/packages/rocketchat-message-snippet/server/publications/snippetedMessagesByRoom.js @@ -11,7 +11,7 @@ Meteor.publish('snippetedMessages', function(rid, limit=50) { return this.ready(); } - let cursorHandle = RocketChat.models.SnippetMessage.findByRoomId( + let cursorHandle = RocketChat.models.Messages.findSnippetedByRoom( rid, { sort: {ts: -1}, @@ -19,13 +19,13 @@ Meteor.publish('snippetedMessages', function(rid, limit=50) { } ).observeChanges({ added: function(_id, record) { - publication.added('rocketchat_snippeted_message', _id, record); + publication.added('rocketchat_message', _id, record); }, changed: function(_id, record) { - publication.changed('rocketchat_snippeted_message', _id, record); + publication.changed('rocketchat_message', _id, record); }, removed: function(_id) { - publication.removed('rocketchat_snippeted_message', _id); + publication.removed('rocketchat_message', _id); } }); this.ready();