mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-06 22:15:48 +01:00
notifications.js style
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user