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) {
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),
]);
notifications = notifications.filter(Boolean);

@ -103,12 +103,25 @@ UserNotifications.getNotifications = async function (nids, uid) {
return result && result.notifications;
};
UserNotifications.getDailyUnread = async function (uid) {
const yesterday = Date.now() - (1000 * 60 * 60 * 24); // Approximate, can be more or less depending on time changes, makes no difference really.
const nids = await db.getSortedSetRevRangeByScore('uid:' + uid + ':notifications:unread', 0, 20, '+inf', yesterday);
UserNotifications.getUnreadInterval = async function (uid, interval) {
const dayInMs = 1000 * 60 * 60 * 24;
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);
};
UserNotifications.getDailyUnread = async function (uid) {
return await UserNotifications.getUnreadInterval(uid, 'day');
};
UserNotifications.getUnreadCount = async function (uid) {
if (parseInt(uid, 10) <= 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) {
user.notifications.getUnreadCount(0, function (err, count) {
assert.ifError(err);

Loading…
Cancel
Save