Some improvements from `more-streams` (#4510)

pull/4512/head
Rodrigo Nascimento 10 years ago committed by GitHub
parent bf75a0e4ad
commit d31f8658dc
  1. 2
      packages/rocketchat-action-links/server/actionLinkHandler.js
  2. 7
      packages/rocketchat-api/server/routes.coffee
  3. 4
      packages/rocketchat-channel-settings/client/startup/trackSettingsChange.coffee
  4. 2
      packages/rocketchat-highlight-words/client.coffee
  5. 2
      packages/rocketchat-highlight/highlight.coffee
  6. 18
      packages/rocketchat-integrations/server/processWebhookMessage.js
  7. 2
      packages/rocketchat-katex/katex.coffee
  8. 4
      packages/rocketchat-lib/README.md
  9. 20
      packages/rocketchat-lib/client/MessageAction.coffee
  10. 32
      packages/rocketchat-lib/lib/settings.coffee
  11. 2
      packages/rocketchat-lib/server/methods/filterATAllTag.js
  12. 2
      packages/rocketchat-lib/server/methods/filterBadWords.js
  13. 1
      packages/rocketchat-lib/server/methods/joinDefaultChannels.coffee
  14. 2
      packages/rocketchat-lib/server/models/Messages.coffee
  15. 11
      packages/rocketchat-lib/server/models/Rooms.coffee
  16. 6
      packages/rocketchat-lib/server/models/Subscriptions.coffee
  17. 5
      packages/rocketchat-livechat/client/views/app/tabbar/visitorInfo.js
  18. 2
      packages/rocketchat-livechat/server/hooks/offlineMessage.js
  19. 4
      packages/rocketchat-livechat/server/hooks/sendToCRM.js
  20. 2
      packages/rocketchat-livechat/server/startup.js
  21. 2
      packages/rocketchat-markdown/markdown.coffee
  22. 2
      packages/rocketchat-markdown/markdowncode.coffee
  23. 4
      packages/rocketchat-mentions/client.coffee
  24. 2
      packages/rocketchat-mentions/server.coffee
  25. 20
      packages/rocketchat-message-pin/client/actionButton.coffee
  26. 8
      packages/rocketchat-message-pin/client/pinMessage.coffee
  27. 4
      packages/rocketchat-message-pin/server/pinMessage.coffee
  28. 20
      packages/rocketchat-message-star/client/actionButton.coffee
  29. 4
      packages/rocketchat-message-star/client/starMessage.coffee
  30. 2
      packages/rocketchat-message-star/server/starMessage.coffee
  31. 2
      packages/rocketchat-oembed/server/jumpToMessage.js
  32. 2
      packages/rocketchat-oembed/server/providers.coffee
  33. 28
      packages/rocketchat-piwik/client/trackEvents.js
  34. 2
      packages/rocketchat-reactions/client/init.js
  35. 2
      packages/rocketchat-reactions/client/methods/setReaction.js
  36. 2
      packages/rocketchat-reactions/setReaction.js
  37. 4
      packages/rocketchat-sharedsecret/sharedsecret.coffee
  38. 2
      packages/rocketchat-slackbridge/slackbridge.js
  39. 4
      packages/rocketchat-ui-message/message/message.coffee
  40. 2
      packages/rocketchat-ui-message/message/popup/messagePopup.coffee
  41. 10
      packages/rocketchat-ui-message/message/popup/messagePopup.html
  42. 2
      packages/rocketchat-videobridge/server/methods/jitsiSetTimeout.js
  43. 1
      server/methods/channelsList.coffee
  44. 6
      server/methods/createDirectMessage.coffee

@ -16,7 +16,7 @@ Meteor.methods({
throw new Meteor.Error('error-invalid-actionlink', 'Invalid action link', { method: 'actionLinkHandler' });
}
var room = RocketChat.models.Rooms.findOne({ _id: message.rid });
var room = RocketChat.models.Rooms.findOneById(message.rid);
if (Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) === -1) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'actionLinkHandler' });
}

@ -103,7 +103,7 @@ RocketChat.API.v1.addRoute 'channels.create', authRequired: true,
return RocketChat.API.v1.failure e.name + ': ' + e.message
return RocketChat.API.v1.success
channel: RocketChat.models.Rooms.findOne({_id: id.rid})
channel: RocketChat.models.Rooms.findOneById(id.rid)
# List Private Groups a user has access to
RocketChat.API.v1.addRoute 'groups.list', authRequired: true,
@ -123,7 +123,7 @@ RocketChat.API.v1.addRoute 'channel.addall', authRequired: true,
return RocketChat.API.v1.failure e.name + ': ' + e.message
return RocketChat.API.v1.success
channel: RocketChat.models.Rooms.findOne({_id: @bodyParams.roomId})
channel: RocketChat.models.Rooms.findOneById(@bodyParams.roomId)
# List all users
RocketChat.API.v1.addRoute 'users.list', authRequired: true,
@ -255,5 +255,4 @@ RocketChat.API.v1.addRoute 'groups.create', authRequired: true,
return RocketChat.API.v1.failure e.name + ': ' + e.message
return RocketChat.API.v1.success
group: RocketChat.models.Rooms.findOne({_id: id.rid})
group: RocketChat.models.Rooms.findOneById(id.rid)

@ -12,7 +12,7 @@ Meteor.startup ->
return msg
RocketChat.callbacks.add 'streamMessage', roomSettingsChangedCallback, RocketChat.callbacks.priority.HIGH
RocketChat.callbacks.add 'streamMessage', roomSettingsChangedCallback, RocketChat.callbacks.priority.HIGH, 'room-settings-changed'
roomNameChangedCallback = (msg) ->
Tracker.nonreactive ->
@ -24,4 +24,4 @@ Meteor.startup ->
return msg
RocketChat.callbacks.add 'streamMessage', roomNameChangedCallback, RocketChat.callbacks.priority.HIGH
RocketChat.callbacks.add 'streamMessage', roomNameChangedCallback, RocketChat.callbacks.priority.HIGH, 'room-name-changed'

@ -22,4 +22,4 @@ class HighlightWordsClient
message.html = msg
return message
RocketChat.callbacks.add 'renderMessage', HighlightWordsClient, RocketChat.callbacks.priority.MEDIUM + 1
RocketChat.callbacks.add 'renderMessage', HighlightWordsClient, RocketChat.callbacks.priority.MEDIUM, 'highlight-words'

@ -61,5 +61,5 @@ class Highlight
return message
RocketChat.callbacks.add 'renderMessage', Highlight, RocketChat.callbacks.priority.HIGH
RocketChat.callbacks.add 'renderMessage', Highlight, RocketChat.callbacks.priority.HIGH, 'highlight'
RocketChat.Highlight = true

@ -22,15 +22,7 @@ this.processWebhookMessage = function(messageObj, user, defaultValues) {
switch (channelType) {
case '#':
room = RocketChat.models.Rooms.findOne({
$or: [
{
_id: channel
}, {
name: channel
}
]
});
room = RocketChat.models.Rooms.findOneByIdOrName(channel);
if (!_.isObject(room)) {
throw new Meteor.Error('invalid-channel');
}
@ -52,18 +44,14 @@ this.processWebhookMessage = function(messageObj, user, defaultValues) {
]
}) || {};
rid = [user._id, roomUser._id].sort().join('');
room = RocketChat.models.Rooms.findOne({
_id: {
$in: [rid, channel]
}
});
room = RocketChat.models.Rooms.findOneById({$in: [rid, channel]});
if (!_.isObject(roomUser) && !_.isObject(room)) {
throw new Meteor.Error('invalid-channel');
}
if (!room) {
Meteor.runAsUser(user._id, function() {
Meteor.call('createDirectMessage', roomUser.username);
room = RocketChat.models.Rooms.findOne(rid);
room = RocketChat.models.Rooms.findOneById(rid);
});
}
break;

@ -171,7 +171,7 @@ class Katex
RocketChat.katex = new Katex
cb = RocketChat.katex.render_message.bind(RocketChat.katex)
RocketChat.callbacks.add 'renderMessage', cb, RocketChat.callbacks.priority.HIGH - 1
RocketChat.callbacks.add 'renderMessage', cb, RocketChat.callbacks.priority.HIGH - 1, 'katex'
if Meteor.isClient
Blaze.registerHelper 'RocketChatKatex', (text) ->

@ -13,8 +13,8 @@ RocketChat.settings.addGroup('Settings_Group', function() {
this.section('Group_Section', function() {
this.add('Setting_Inside_Section', 'default_value', {
type: 'boolean',
public: true,
type: 'boolean',
public: true,
enableQuery: {
_id: 'SettingInGroup',
value: true

@ -120,9 +120,7 @@ Meteor.startup ->
input.updateAutogrow()
, 200
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
hasPermission = RocketChat.authz.hasAtLeastOnePermission('edit-message', message.rid)
@ -153,9 +151,7 @@ Meteor.startup ->
RocketChat.MessageAction.hideDropDown()
chatMessages[Session.get('openedRoom')].confirmDeleteMsg(message)
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
hasPermission = RocketChat.authz.hasAtLeastOnePermission('delete-message', message.rid)
@ -188,9 +184,7 @@ Meteor.startup ->
$(event.currentTarget).attr('data-clipboard-text', RocketChat.MessageAction.getPermaLink(message._id));
toastr.success(TAPi18n.__('Copied'))
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return true
@ -211,9 +205,7 @@ Meteor.startup ->
$(event.currentTarget).attr('data-clipboard-text', message)
toastr.success(TAPi18n.__('Copied'))
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return true
@ -238,9 +230,7 @@ Meteor.startup ->
input.focus()
RocketChat.MessageAction.hideDropDown()
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return true

@ -4,11 +4,9 @@
###
RocketChat.settings =
callbacks: {}
regexCallbacks: {}
ts: new Date
get: (_id) ->
return Meteor.settings?[_id]
get: (_id, callback) ->
if callback?
RocketChat.settings.onload _id, callback
@ -17,9 +15,22 @@ RocketChat.settings =
callback key, value
return
if _.isRegExp(_id)
for key, value of Meteor.settings when _id.test(key)
callback key, value
return
if Meteor.settings?[_id]?
callback _id, Meteor.settings?[_id]
else
if _.isRegExp(_id)
items = []
for key, value of Meteor.settings when _id.test(key)
items.push
key: key
value: value
return items
return Meteor.settings?[_id]
set: (_id, value, callback) ->
@ -46,6 +57,10 @@ RocketChat.settings =
for callback in RocketChat.settings.callbacks['*']
callback key, value, initialLoad
for key, value of RocketChat.settings.regexCallbacks
if value.regex.test(key)
callback(key, value) for callback in value.callbacks
onload: (key, callback) ->
# if key is '*'
@ -57,5 +72,12 @@ RocketChat.settings =
keys = [].concat key
for k in keys
RocketChat.settings.callbacks[k] ?= []
RocketChat.settings.callbacks[k].push callback
if _.isRegExp k
RocketChat.settings.regexCallbacks[k.source] ?= {
regex: k
callbacks: []
}
RocketChat.settings.regexCallbacks[k.source].callbacks.push callback
else
RocketChat.settings.callbacks[k] ?= []
RocketChat.settings.callbacks[k].push callback

@ -33,4 +33,4 @@ RocketChat.callbacks.add('beforeSaveMessage', function(message) {
return message;
}, 1);
}, 1, 'filterATAllTag');

@ -18,4 +18,4 @@ RocketChat.callbacks.add('beforeSaveMessage', function(message) {
return message;
}, 1);
}, 1, 'filterBadWords');

@ -1,6 +1,5 @@
Meteor.methods
joinDefaultChannels: (silenced) ->
check silenced, Match.Optional(Boolean)
if not Meteor.userId()

@ -256,7 +256,7 @@ RocketChat.models.Messages = new class extends RocketChat.models._Base
update =
$set:
attachments: attachments
console.log(query, update);
return @update query, update

@ -16,6 +16,17 @@ RocketChat.models.Rooms = new class extends RocketChat.models._Base
return @findOne query, options
findOneByIdOrName: (_idOrName, options) ->
query = {
$or: [{
_id: _idOrName
}, {
name: _idOrName
}]
}
return this.findOne(query, options)
findOneByImportId: (_id, options) ->
query =
importIds: _id

@ -71,6 +71,12 @@ RocketChat.models.Subscriptions = new class extends RocketChat.models._Base
return @find query, options
findByRoomId: (roomId, options) ->
query =
"rid": roomId
return @find query, options
getLastSeen: (options = {}) ->
query = { ls: { $exists: 1 } }
options.sort = { ls: -1 }

@ -135,9 +135,8 @@ Template.visitorInfo.helpers({
const data = Template.currentData();
if (data && data.rid) {
const room = RocketChat.models.Rooms.findOne(data.rid);
const user = Meteor.user();
return room.usernames.indexOf(user && user.username) !== -1;
const subscription = RocketChat.models.Subscriptions.findOne({ rid: data.rid });
return subscription !== undefined;
}
return false;
}

@ -14,4 +14,4 @@ RocketChat.callbacks.add('livechat.offlineMessage', (data) => {
};
RocketChat.Livechat.sendRequest(postData);
});
}, RocketChat.callbacks.priority.MEDIUM, 'livechat-send-email-offline-message');

@ -39,8 +39,8 @@ function sendToCRM(hook, room) {
RocketChat.callbacks.add('livechat.closeRoom', (room) => {
return sendToCRM('closeRoom', room);
});
}, RocketChat.callbacks.priority.MEDIUM, 'livechat-send-crm-close-room');
RocketChat.callbacks.add('livechat.saveInfo', (room) => {
return sendToCRM('saveLivechatInfo', room);
});
}, RocketChat.callbacks.priority.MEDIUM, 'livechat-send-crm-save-info');

@ -28,5 +28,5 @@ Meteor.startup(() => {
throw new Meteor.Error(TAPi18n.__('You_cant_leave_a_livechat_room_Please_use_the_close_button', {
lng: user.language || RocketChat.settings.get('language') || 'en'
}));
}, RocketChat.callbacks.priority.LOW);
}, RocketChat.callbacks.priority.LOW, 'cant-leave-room');
});

@ -79,7 +79,7 @@ class Markdown
RocketChat.Markdown = Markdown
RocketChat.callbacks.add 'renderMessage', Markdown , RocketChat.callbacks.priority.HIGH
RocketChat.callbacks.add 'renderMessage', Markdown, RocketChat.callbacks.priority.HIGH, 'markdown'
if Meteor.isClient
Blaze.registerHelper 'RocketChatMarkdown', (text) ->

@ -82,4 +82,4 @@ class MarkdownCode
RocketChat.MarkdownCode = MarkdownCode
# MarkdownCode gets higher priority over Markdown so it's possible place a callback in between (katex for exmaple)
RocketChat.callbacks.add 'renderMessage', MarkdownCode, RocketChat.callbacks.priority.HIGH - 2
RocketChat.callbacks.add 'renderMessage', MarkdownCode, RocketChat.callbacks.priority.HIGH - 2, 'markdowncode'

@ -51,5 +51,5 @@ class MentionsClient
message.html = msg
return message
RocketChat.callbacks.add 'renderMessage', MentionsClient
RocketChat.callbacks.add 'renderMentions', MentionsClient
RocketChat.callbacks.add 'renderMessage', MentionsClient, RocketChat.callbacks.priority.MEDIUM, 'mentions-message'
RocketChat.callbacks.add 'renderMentions', MentionsClient, RocketChat.callbacks.priority.MEDIUM, 'mentions-mentions'

@ -49,4 +49,4 @@ class MentionsServer
message.channels = verifiedChannels
return message
RocketChat.callbacks.add 'beforeSaveMessage', MentionsServer, RocketChat.callbacks.priority.HIGH
RocketChat.callbacks.add 'beforeSaveMessage', MentionsServer, RocketChat.callbacks.priority.HIGH, 'mentions'

@ -15,9 +15,7 @@ Meteor.startup ->
if error
return handleError(error)
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
else if message.pinned or not RocketChat.settings.get('Message_AllowPinning')
return false
@ -41,9 +39,7 @@ Meteor.startup ->
if error
return handleError(error)
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
else if not message.pinned or not RocketChat.settings.get('Message_AllowPinning')
return false
@ -63,11 +59,9 @@ Meteor.startup ->
RocketChat.MessageAction.hideDropDown()
RoomHistoryManager.getSurroundingMessages(message, 50)
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return true
order: 100
@ -85,10 +79,8 @@ Meteor.startup ->
$(event.currentTarget).attr('data-clipboard-text', RocketChat.MessageAction.getPermaLink(message._id));
toastr.success(TAPi18n.__('Copied'))
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return true
order: 101

@ -6,9 +6,7 @@ Meteor.methods
if not RocketChat.settings.get 'Message_AllowPinning'
return false
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
ChatMessage.update
@ -23,9 +21,7 @@ Meteor.methods
if not RocketChat.settings.get 'Message_AllowPinning'
return false
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
ChatMessage.update

@ -6,7 +6,7 @@ Meteor.methods
if not RocketChat.settings.get 'Message_AllowPinning'
throw new Meteor.Error 'error-action-not-allowed', 'Message pinning not allowed', { method: 'pinMessage', action: 'Message_pinning' }
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
room = RocketChat.models.Rooms.findOneById(message.rid)
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
return false
@ -42,7 +42,7 @@ Meteor.methods
if not RocketChat.settings.get 'Message_AllowPinning'
throw new Meteor.Error 'error-action-not-allowed', 'Message pinning not allowed', { method: 'unpinMessage', action: 'Message_pinning' }
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
room = RocketChat.models.Rooms.findOneById(message.rid)
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
return false

@ -15,9 +15,7 @@ Meteor.startup ->
if error
return handleError(error)
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return RocketChat.settings.get('Message_AllowStarring') and not message.starred
@ -39,9 +37,7 @@ Meteor.startup ->
if error
return handleError(error)
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return RocketChat.settings.get('Message_AllowStarring') and message.starred
@ -59,11 +55,9 @@ Meteor.startup ->
RocketChat.MessageAction.hideDropDown()
RoomHistoryManager.getSurroundingMessages(message, 50)
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return true
order: 100
@ -81,10 +75,8 @@ Meteor.startup ->
$(event.currentTarget).attr('data-clipboard-text', RocketChat.MessageAction.getPermaLink(message._id));
toastr.success(TAPi18n.__('Copied'))
validation: (message) ->
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })?
return false
return true
order: 101

@ -3,9 +3,7 @@ Meteor.methods
if not Meteor.userId()
return false
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
if not RocketChat.models.Subscriptions.findOne({ rid: message.rid })
return false
if not RocketChat.settings.get 'Message_AllowStarring'

@ -6,7 +6,7 @@ Meteor.methods
if not RocketChat.settings.get 'Message_AllowStarring'
throw new Meteor.Error 'error-action-not-allowed', 'Message starring not allowed', { method: 'pinMessage', action: 'Message_starring' }
room = RocketChat.models.Rooms.findOne({ _id: message.rid })
room = RocketChat.models.Rooms.findOneById(message.rid)
if Array.isArray(room.usernames) && room.usernames.indexOf(Meteor.user().username) is -1
return false

@ -29,4 +29,4 @@ RocketChat.callbacks.add('beforeSaveMessage', (msg) => {
});
}
return msg;
}, RocketChat.callbacks.priority.LOW);
}, RocketChat.callbacks.priority.LOW, 'jumpToMessage');

@ -60,6 +60,7 @@ RocketChat.callbacks.add 'oembed:beforeGetUrlContent', (data) ->
delete data.urlObj.search
return data
, RocketChat.callbacks.priority.MEDIUM, 'oembed-providers-before'
RocketChat.callbacks.add 'oembed:afterParseContent', (data) ->
if data.parsedUrl?.query?
@ -79,3 +80,4 @@ RocketChat.callbacks.add 'oembed:afterParseContent', (data) ->
data.meta['oembedUrl'] = url
return data
, RocketChat.callbacks.priority.MEDIUM, 'oembed-providers-after'

@ -15,7 +15,7 @@ RocketChat.callbacks.add('loginPageStateChange', (state) => {
if (window._paq) {
window._paq.push(['trackEvent', 'Navigation', 'Login Page State Change', state]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-login-state-change');
//Messsages
RocketChat.callbacks.add('afterSaveMessage', (message) => {
@ -30,37 +30,37 @@ RocketChat.callbacks.add('afterCreateChannel', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Create', room.name + ' (' + room._id + ')' ]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-after-create-channel');
RocketChat.callbacks.add('roomNameChanged', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Changed Name', room.name + ' (' + room._id + ')' ]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-room-name-changed');
RocketChat.callbacks.add('roomTopicChanged', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Changed Topic', room.name + ' (' + room._id + ')' ]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-room-topic-changed');
RocketChat.callbacks.add('roomTypeChanged', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Changed Room Type', room.name + ' (' + room._id + ')' ]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-room-type-changed');
RocketChat.callbacks.add('archiveRoom', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Archived', room.name + ' (' + room._id + ')' ]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-archive-room');
RocketChat.callbacks.add('unarchiveRoom', (room) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_rooms')) {
window._paq.push(['trackEvent', 'Room', 'Unarchived', room.name + ' (' + room._id + ')' ]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-unarchive-room');
//Users
//Track logins and associate user ids with piwik
@ -87,40 +87,40 @@ RocketChat.callbacks.add('userRegistered', () => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_users')) {
window._paq.push(['trackEvent', 'User', 'Registered']);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-user-resitered');
RocketChat.callbacks.add('usernameSet', () => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_users')) {
window._paq.push(['trackEvent', 'User', 'Username Set']);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piweik-username-set');
RocketChat.callbacks.add('userPasswordReset', () => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_users')) {
window._paq.push(['trackEvent', 'User', 'Reset Password']);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-user-password-reset');
RocketChat.callbacks.add('userConfirmationEmailRequested', () => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_users')) {
window._paq.push(['trackEvent', 'User', 'Confirmation Email Requested']);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-user-confirmation-email-requested');
RocketChat.callbacks.add('userForgotPasswordEmailRequested', () => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_users')) {
window._paq.push(['trackEvent', 'User', 'Forgot Password Email Requested']);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-user-forgot-password-email-requested');
RocketChat.callbacks.add('userStatusManuallySet', (status) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_users')) {
window._paq.push(['trackEvent', 'User', 'Status Manually Changed', status]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-user-status-manually-set');
RocketChat.callbacks.add('userAvatarSet', (service) => {
if (window._paq && RocketChat.settings.get('PiwikAnalytics_features_users')) {
window._paq.push(['trackEvent', 'User', 'Avatar Changed', service]);
}
});
}, RocketChat.callbacks.priority.MEDIUM, 'piwik-user-avatar-set');

@ -59,7 +59,7 @@ Meteor.startup(function() {
if (Array.isArray(room.muted) && room.muted.indexOf(user.username) !== -1) {
return false;
} else if (Array.isArray(room.usernames) && room.usernames.indexOf(user.username) === -1) {
} else if (!RocketChat.models.Subscriptions.findOne({ rid: message.rid })) {
return false;
}

@ -11,7 +11,7 @@ Meteor.methods({
if (Array.isArray(room.muted) && room.muted.indexOf(user.username) !== -1) {
return false;
} else if (Array.isArray(room.usernames) && room.usernames.indexOf(user.username) === -1) {
} else if (!RocketChat.models.Subscriptions.findOne({ rid: message.rid })) {
return false;
}

@ -23,7 +23,7 @@ Meteor.methods({
msg: TAPi18n.__('You_have_been_muted', {}, user.language)
});
return false;
} else if (Array.isArray(room.usernames) && room.usernames.indexOf(user.username) === -1) {
} else if (!RocketChat.models.Subscriptions.findOne({ rid: message.rid })) {
return false;
}

@ -36,7 +36,7 @@ if (Meteor.isServer)
SharedSecret[currentUser] = []
SharedSecret[currentUser][currentRoomId] = secret
RocketChat.callbacks.add 'beforeSaveMessage', EncryptMessage, 9999 #LAST
RocketChat.callbacks.add 'beforeSaveMessage', EncryptMessage, 9999, 'sharedsecret-encrypt-message' #LAST
RocketChat.slashCommands.add 'setsecretkey', HandleSlashCommand
if (Meteor.isClient)
@ -78,5 +78,5 @@ if (Meteor.isClient)
RocketChat.callbacks.add 'renderMessage', DecryptMessage, -9999 #FIRST
RocketChat.callbacks.add 'renderMessage', DecryptMessage, -9999, 'sharedsecret-decrypt-message' #FIRST
RocketChat.slashCommands.add 'setsecretkey', HandleSlashCommand

@ -154,7 +154,7 @@ class SlackBridge {
RocketChat.models.Rooms.update({ _id: channelData.rocketId }, { $set: roomUpdate, $addToSet: { importIds: channelData.id } });
this.channelMap[channelData.rocketId] = { id: channelId, family: channelId.charAt(0) === 'C' ? 'channels' : 'groups' };
}
return RocketChat.models.Rooms.findOne(channelData.rocketId);
return RocketChat.models.Rooms.findOneById(channelData.rocketId);
}
return;

@ -139,8 +139,8 @@ Template.message.helpers
return
hideCog: ->
room = RocketChat.models.Rooms.findOne({ _id: this.rid });
return 'hidden' if room.usernames.indexOf(Meteor.user().username) == -1
subscription = RocketChat.models.Subscriptions.findOne({ rid: this.rid });
return 'hidden' if not subscription?
hideUsernames: ->
prefs = Meteor.user()?.settings?.preferences

@ -160,7 +160,7 @@ Template.messagePopup.onCreated ->
template.records = new ReactiveVar []
Tracker.autorun ->
if template.data.collection.find?
if template.data.collection.findOne?
template.data.collection.find().count()
filter = template.textFilter.get()

@ -1,10 +1,12 @@
<template name="messagePopup">
{{#if isOpen}}
<div class="message-popup-position">
<div class="message-popup">
<div class="message-popup-title">
{{title}}
</div>
<div class="message-popup {{cls}}">
{{#if title}}
<div class="message-popup-title">
{{title}}
</div>
{{/if}}
<div class="message-popup-items">
{{> loading}}
{{#each data}}

@ -1,7 +1,7 @@
Meteor.methods({
'jitsi:updateTimeout': (rid) => {
let room = RocketChat.models.Rooms.findOne({_id: rid});
let room = RocketChat.models.Rooms.findOneById(rid);
let currentTime = new Date().getTime();
let jitsiTimeout = new Date((room && room.jitsiTimeout) || currentTime).getTime();

@ -1,5 +1,6 @@
Meteor.methods
channelsList: (filter, channelType, limit, sort) ->
this.unblock()
check filter, String
check channelType, String

@ -78,3 +78,9 @@ Meteor.methods
return {
rid: rid
}
DDPRateLimiter.addRule
type: 'method'
name: 'createDirectMessage'
connectionId: -> return true
, 10, 60000

Loading…
Cancel
Save