notifications.js style

This commit is contained in:
Barış Soner Uşaklı
2017-05-08 20:36:43 -04:00
parent f3deef4931
commit b18b0db5be
2 changed files with 437 additions and 438 deletions

View File

@@ -15,19 +15,20 @@ var batch = require('./batch');
var plugins = require('./plugins'); var plugins = require('./plugins');
var utils = require('./utils'); var utils = require('./utils');
(function (Notifications) { var Notifications = module.exports;
Notifications.init = function () {
Notifications.startJobs = function () {
winston.verbose('[notifications.init] Registering jobs.'); winston.verbose('[notifications.init] Registering jobs.');
new cron('*/30 * * * *', Notifications.prune, null, true); new cron('*/30 * * * *', Notifications.prune, null, true);
}; };
Notifications.get = function (nid, callback) { Notifications.get = function (nid, callback) {
Notifications.getMultiple([nid], function (err, notifications) { Notifications.getMultiple([nid], function (err, notifications) {
callback(err, Array.isArray(notifications) && notifications.length ? notifications[0] : null); callback(err, Array.isArray(notifications) && notifications.length ? notifications[0] : null);
}); });
}; };
Notifications.getMultiple = function (nids, callback) { Notifications.getMultiple = function (nids, callback) {
if (!nids.length) { if (!nids.length) {
return setImmediate(callback, null, []); return setImmediate(callback, null, []);
} }
@@ -73,9 +74,9 @@ var utils = require('./utils');
next(null, notifications); next(null, notifications);
}, },
], callback); ], callback);
}; };
Notifications.filterExists = function (nids, callback) { Notifications.filterExists = function (nids, callback) {
async.waterfall([ async.waterfall([
function (next) { function (next) {
db.isSortedSetMembers('notifications', nids, next); db.isSortedSetMembers('notifications', nids, next);
@@ -88,9 +89,9 @@ var utils = require('./utils');
next(null, nids); next(null, nids);
}, },
], callback); ], callback);
}; };
Notifications.findRelated = function (mergeIds, set, callback) { Notifications.findRelated = function (mergeIds, set, callback) {
// A related notification is one in a zset that has the same mergeId // A related notification is one in a zset that has the same mergeId
var _nids; var _nids;
@@ -118,9 +119,9 @@ var utils = require('./utils');
return mergeIds.indexOf(sets[idx]) !== -1; return mergeIds.indexOf(sets[idx]) !== -1;
})); }));
}); });
}; };
Notifications.create = function (data, callback) { Notifications.create = function (data, callback) {
if (!data.nid) { if (!data.nid) {
return callback(new Error('no-notification-id')); return callback(new Error('no-notification-id'));
} }
@@ -149,9 +150,9 @@ var utils = require('./utils');
callback(err, data); callback(err, data);
}); });
}); });
}; };
Notifications.push = function (notification, uids, callback) { Notifications.push = function (notification, uids, callback) {
callback = callback || function () {}; callback = callback || function () {};
if (!notification || !notification.nid) { if (!notification || !notification.nid) {
@@ -181,9 +182,9 @@ var utils = require('./utils');
}, 1000); }, 1000);
callback(); callback();
}; };
function pushToUids(uids, notification, callback) { function pushToUids(uids, notification, callback) {
var oneWeekAgo = Date.now() - 604800000; var oneWeekAgo = Date.now() - 604800000;
var unreadKeys = []; var unreadKeys = [];
var readKeys = []; var readKeys = [];
@@ -224,9 +225,9 @@ var utils = require('./utils');
next(); next();
}, },
], callback); ], callback);
} }
Notifications.pushGroup = function (notification, groupName, callback) { Notifications.pushGroup = function (notification, groupName, callback) {
callback = callback || function () {}; callback = callback || function () {};
groups.getMembers(groupName, 0, -1, function (err, members) { groups.getMembers(groupName, 0, -1, function (err, members) {
if (err || !Array.isArray(members) || !members.length) { if (err || !Array.isArray(members) || !members.length) {
@@ -235,9 +236,9 @@ var utils = require('./utils');
Notifications.push(notification, members, callback); Notifications.push(notification, members, callback);
}); });
}; };
Notifications.pushGroups = function (notification, groupNames, callback) { Notifications.pushGroups = function (notification, groupNames, callback) {
callback = callback || function () {}; callback = callback || function () {};
groups.getMembersOfGroups(groupNames, function (err, groupMembers) { groups.getMembersOfGroups(groupNames, function (err, groupMembers) {
if (err) { if (err) {
@@ -248,9 +249,9 @@ var utils = require('./utils');
Notifications.push(notification, members, callback); Notifications.push(notification, members, callback);
}); });
}; };
Notifications.rescind = function (nid, callback) { Notifications.rescind = function (nid, callback) {
callback = callback || function () {}; callback = callback || function () {};
async.parallel([ async.parallel([
@@ -265,17 +266,17 @@ var utils = require('./utils');
callback(err, nid); callback(err, nid);
}); });
}; };
Notifications.markRead = function (nid, uid, callback) { Notifications.markRead = function (nid, uid, callback) {
callback = callback || function () {}; callback = callback || function () {};
if (!parseInt(uid, 10) || !nid) { if (!parseInt(uid, 10) || !nid) {
return callback(); return callback();
} }
Notifications.markReadMultiple([nid], uid, callback); Notifications.markReadMultiple([nid], uid, callback);
}; };
Notifications.markUnread = function (nid, uid, callback) { Notifications.markUnread = function (nid, uid, callback) {
callback = callback || function () {}; callback = callback || function () {};
if (!parseInt(uid, 10) || !nid) { if (!parseInt(uid, 10) || !nid) {
return callback(); return callback();
@@ -292,9 +293,9 @@ var utils = require('./utils');
async.apply(db.sortedSetAdd, 'uid:' + uid + ':notifications:unread', notification.datetime, nid), async.apply(db.sortedSetAdd, 'uid:' + uid + ':notifications:unread', notification.datetime, nid),
], callback); ], callback);
}); });
}; };
Notifications.markReadMultiple = function (nids, uid, callback) { Notifications.markReadMultiple = function (nids, uid, callback) {
callback = callback || function () {}; callback = callback || function () {};
nids = nids.filter(Boolean); nids = nids.filter(Boolean);
if (!Array.isArray(nids) || !nids.length) { if (!Array.isArray(nids) || !nids.length) {
@@ -357,9 +358,9 @@ var utils = require('./utils');
callback(err); callback(err);
}); });
}); });
}; };
Notifications.markAllRead = function (uid, callback) { Notifications.markAllRead = function (uid, callback) {
db.getSortedSetRevRange('uid:' + uid + ':notifications:unread', 0, 99, function (err, nids) { db.getSortedSetRevRange('uid:' + uid + ':notifications:unread', 0, 99, function (err, nids) {
if (err) { if (err) {
return callback(err); return callback(err);
@@ -371,9 +372,9 @@ var utils = require('./utils');
Notifications.markReadMultiple(nids, uid, callback); Notifications.markReadMultiple(nids, uid, callback);
}); });
}; };
Notifications.prune = function () { Notifications.prune = function () {
var week = 604800000; var week = 604800000;
var cutoffTime = Date.now() - week; var cutoffTime = Date.now() - week;
@@ -404,9 +405,9 @@ var utils = require('./utils');
} }
}); });
}); });
}; };
Notifications.merge = function (notifications, callback) { Notifications.merge = function (notifications, callback) {
// When passed a set of notification objects, merge any that can be merged // When passed a set of notification objects, merge any that can be merged
var mergeIds = [ var mergeIds = [
'notifications:upvoted_your_post_in', 'notifications:upvoted_your_post_in',
@@ -509,6 +510,4 @@ var utils = require('./utils');
}, function (err, data) { }, function (err, data) {
callback(err, data.notifications); callback(err, data.notifications);
}); });
}; };
}(exports));

View File

@@ -48,7 +48,7 @@ start.start = function () {
require('./socket.io').init(webserver.server); require('./socket.io').init(webserver.server);
if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) { if (nconf.get('isPrimary') === 'true' && !nconf.get('jobsDisabled')) {
require('./notifications').init(); require('./notifications').startJobs();
require('./user').startJobs(); require('./user').startJobs();
} }