mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: check if unread_tids are followed
This commit is contained in:
@@ -318,6 +318,9 @@ module.exports = function (module) {
|
||||
if (!key) {
|
||||
return;
|
||||
}
|
||||
if (!values.length) {
|
||||
return [];
|
||||
}
|
||||
values = values.map(helpers.valueToString);
|
||||
const results = await module.client.collection('objects').find({
|
||||
_key: key, value: { $in: values },
|
||||
|
||||
@@ -410,6 +410,9 @@ SELECT 1
|
||||
return;
|
||||
}
|
||||
|
||||
if (!values.length) {
|
||||
return [];
|
||||
}
|
||||
values = values.map(helpers.valueToString);
|
||||
|
||||
const res = await module.pool.query({
|
||||
|
||||
@@ -203,6 +203,9 @@ module.exports = function (module) {
|
||||
};
|
||||
|
||||
module.isSortedSetMembers = async function (key, values) {
|
||||
if (!values.length) {
|
||||
return [];
|
||||
}
|
||||
const batch = module.client.batch();
|
||||
values.forEach(v => batch.zscore(key, String(v)));
|
||||
const results = await helpers.execBatch(batch);
|
||||
|
||||
@@ -101,10 +101,21 @@ module.exports = function (Topics) {
|
||||
]);
|
||||
|
||||
const userReadTime = _.mapValues(_.keyBy(userScores, 'value'), 'score');
|
||||
const isTopicsFollowed = _.mapValues(_.keyBy(followedTids, 'value'), 'score');
|
||||
const isTopicsFollowed = {};
|
||||
followedTids.forEach((t) => {
|
||||
isTopicsFollowed[t.value] = true;
|
||||
});
|
||||
const unreadFollowed = await db.isSortedSetMembers(
|
||||
'uid:' + params.uid + ':followed_tids', tids_unread.map(t => t.value)
|
||||
);
|
||||
|
||||
const unreadTopics = _.unionWith(categoryTids, followedTids.concat(tids_unread), (a, b) => a.value === b.value)
|
||||
tids_unread.forEach((t, i) => {
|
||||
isTopicsFollowed[t.value] = unreadFollowed[i];
|
||||
});
|
||||
|
||||
const unreadTopics = _.unionWith(categoryTids, followedTids, (a, b) => a.value === b.value)
|
||||
.filter(t => !ignoredTids.includes(t.value) && (!userReadTime[t.value] || t.score > userReadTime[t.value]))
|
||||
.concat(tids_unread)
|
||||
.sort((a, b) => b.score - a.score);
|
||||
|
||||
let tids = _.uniq(unreadTopics.map(topic => topic.value)).slice(0, 200);
|
||||
|
||||
Reference in New Issue
Block a user