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) {
|
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user