linagora-rse
Version:
46 lines (36 loc) • 1.44 kB
JavaScript
;
var denormalizer = require('./denormalizer');
var pubsub = require('../pubsub').local;
var logger = require('../logger');
var as = require('../activitystreams');
function registerUserStreamHandlers(topic, handlers) {
function buildHandler(handler) {
return function handle(data) {
handler(data).then(function(entry) {
as.addTimelineEntry(entry, function(err, result) {
if (err) {
return logger.error('Error while saving TimelineEntry', err);
}
logger.debug('TimelineEntry has been saved', result);
});
}, function(err) {
return logger.error('Error while creating TimelineEntry from data', err);
});
};
}
handlers.forEach(function(handler) {
pubsub.topic(topic).subscribe(buildHandler(handler));
});
}
module.exports.registerUserStreamHandlers = registerUserStreamHandlers;
function init() {
var messageLike = require('./listeners/message.like');
registerUserStreamHandlers(messageLike.LIKE_NOTIFICATION, [messageLike.handler]);
var userFollow = require('./listeners/user.follow');
registerUserStreamHandlers(userFollow.FOLLOW_NOTIFICATION, [userFollow.handler]);
var userUnfollow = require('./listeners/user.unfollow');
registerUserStreamHandlers(userUnfollow.UNFOLLOW_NOTIFICATION, [userUnfollow.handler]);
denormalizer.init();
}
module.exports.init = init;
module.exports.denormalizer = denormalizer;