mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: #7765
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user