v1.18.x
Barış Soner Uşaklı 6 years ago
parent 0d047f4eb9
commit 0b498acdcf

@ -72,7 +72,7 @@ Digest.send = async function (data) {
async.eachLimit(users, 100, async function (userObj) { async.eachLimit(users, 100, async function (userObj) {
let [notifications, topics] = await Promise.all([ let [notifications, topics] = await Promise.all([
user.notifications.getDailyUnread(userObj.uid), user.notifications.getUnreadInterval(userObj.uid, data.interval),
getTermTopics(data.interval, userObj.uid, 0, 9), getTermTopics(data.interval, userObj.uid, 0, 9),
]); ]);
notifications = notifications.filter(Boolean); notifications = notifications.filter(Boolean);

@ -103,12 +103,25 @@ UserNotifications.getNotifications = async function (nids, uid) {
return result && result.notifications; return result && result.notifications;
}; };
UserNotifications.getDailyUnread = async function (uid) { UserNotifications.getUnreadInterval = async function (uid, interval) {
const yesterday = Date.now() - (1000 * 60 * 60 * 24); // Approximate, can be more or less depending on time changes, makes no difference really. const dayInMs = 1000 * 60 * 60 * 24;
const nids = await db.getSortedSetRevRangeByScore('uid:' + uid + ':notifications:unread', 0, 20, '+inf', yesterday); const times = {
day: dayInMs,
week: 7 * dayInMs,
month: 30 * dayInMs,
};
if (!times[interval]) {
return [];
}
const min = Date.now() - times[interval];
const nids = await db.getSortedSetRevRangeByScore('uid:' + uid + ':notifications:unread', 0, 20, '+inf', min);
return await UserNotifications.getNotifications(nids, uid); return await UserNotifications.getNotifications(nids, uid);
}; };
UserNotifications.getDailyUnread = async function (uid) {
return await UserNotifications.getUnreadInterval(uid, 'day');
};
UserNotifications.getUnreadCount = async function (uid) { UserNotifications.getUnreadCount = async function (uid) {
if (parseInt(uid, 10) <= 0) { if (parseInt(uid, 10) <= 0) {
return 0; return 0;

@ -380,6 +380,14 @@ describe('Notifications', function () {
}); });
}); });
it('should return empty array for invalid interval', function (done) {
user.notifications.getUnreadInterval(uid, '2 aeons', function (err, data) {
assert.ifError(err);
assert.deepEqual(data, []);
done();
});
});
it('should return 0 for falsy uid', function (done) { it('should return 0 for falsy uid', function (done) {
user.notifications.getUnreadCount(0, function (err, count) { user.notifications.getUnreadCount(0, function (err, count) {
assert.ifError(err); assert.ifError(err);

Loading…
Cancel
Save