1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/rocketchat_ynh.git synced 2024-09-03 20:16:25 +02:00
rocketchat_ynh/sources/programs/server/packages/rocketchat_reactions.js
2016-04-29 16:32:48 +02:00

125 lines
9.7 KiB
JavaScript

(function () {
/* Imports */
var Meteor = Package.meteor.Meteor;
var ECMAScript = Package.ecmascript.ECMAScript;
var RocketChat = Package['rocketchat:lib'].RocketChat;
var babelHelpers = Package['babel-runtime'].babelHelpers;
var Symbol = Package['ecmascript-runtime'].Symbol;
var Map = Package['ecmascript-runtime'].Map;
var Set = Package['ecmascript-runtime'].Set;
var Promise = Package.promise.Promise;
var TAPi18next = Package['tap:i18n'].TAPi18next;
var TAPi18n = Package['tap:i18n'].TAPi18n;
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_reactions/server/models/Messages.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
RocketChat.models.Messages.setReactions = function (messageId, reactions) { // 1
return this.update({ _id: messageId }, { $set: { reactions: reactions } }); // 2
}; //
//
RocketChat.models.Messages.unsetReactions = function (messageId) { // 5
return this.update({ _id: messageId }, { $unset: { reactions: 1 } }); // 6
}; //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_reactions/setReaction.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
/* globals msgStream */ //
Meteor.methods({ // 2
setReaction: function (reaction, messageId) { // 3
if (!Meteor.userId()) { // 4
throw new Meteor.Error(203, 'User_logged_out'); // 5
} //
//
var message = RocketChat.models.Messages.findOneById(messageId); // 8
//
if (!Meteor.call('canAccessRoom', message.rid, Meteor.userId())) { // 10
throw new Meteor.Error(203, '[methods] Not authorized'); // 11
} //
//
var user = Meteor.user(); // 14
//
if (message.reactions && message.reactions[reaction] && message.reactions[reaction].usernames.indexOf(user.username) !== -1) {
message.reactions[reaction].usernames.splice(message.reactions[reaction].usernames.indexOf(user.username), 1);
//
if (message.reactions[reaction].usernames.length === 0) { // 19
delete message.reactions[reaction]; // 20
} //
//
if (_.isEmpty(message.reactions)) { // 23
delete message.reactions; // 24
RocketChat.models.Messages.unsetReactions(messageId); // 25
} else { //
RocketChat.models.Messages.setReactions(messageId, message.reactions); // 27
} //
} else { //
if (!message.reactions) { // 30
message.reactions = {}; // 31
} //
if (!message.reactions[reaction]) { // 33
message.reactions[reaction] = { // 34
usernames: [] // 35
}; //
} //
message.reactions[reaction].usernames.push(user.username); // 38
//
RocketChat.models.Messages.setReactions(messageId, message.reactions); // 40
} //
//
msgStream.emit(message.rid, message); // 43
//
return; // 45
} //
}); //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
(function(){
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// packages/rocketchat_reactions/loadStylesheets.js //
// //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
RocketChat.theme.addPackageAsset(function () { // 1
return Assets.getText('client/stylesheets/reaction.less'); // 2
}); //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}).call(this);
/* Exports */
if (typeof Package === 'undefined') Package = {};
Package['rocketchat:reactions'] = {};
})();
//# sourceMappingURL=rocketchat_reactions.js.map