notifications.js style

v1.18.x
Barış Soner Uşaklı 8 years ago
parent f3deef4931
commit b18b0db5be

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

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

Loading…
Cancel
Save