fix: tag filtering when changing filter to watched topics

or changing popular time limit to month
isekai-main
Barış Soner Uşaklı 2 years ago
parent f054a4f44d
commit 1545223e7f

@ -174,7 +174,7 @@ module.exports = function (Topics) {
} }
tids = await privileges.topics.filterTids('topics:read', tids, uid); tids = await privileges.topics.filterTids('topics:read', tids, uid);
let topicData = await Topics.getTopicsFields(tids, ['uid', 'tid', 'cid']); let topicData = await Topics.getTopicsFields(tids, ['uid', 'tid', 'cid', 'tags']);
const topicCids = _.uniq(topicData.map(topic => topic.cid)).filter(Boolean); const topicCids = _.uniq(topicData.map(topic => topic.cid)).filter(Boolean);
async function getIgnoredCids() { async function getIgnoredCids() {
@ -192,11 +192,13 @@ module.exports = function (Topics) {
topicData = filtered; topicData = filtered;
const cids = params.cids && params.cids.map(String); const cids = params.cids && params.cids.map(String);
const { tags } = params;
tids = topicData.filter(t => ( tids = topicData.filter(t => (
t && t &&
t.cid && t.cid &&
!isCidIgnored[t.cid] && !isCidIgnored[t.cid] &&
(!cids || cids.includes(String(t.cid))) (!cids || cids.includes(String(t.cid))) &&
(!tags.length || tags.every(tag => t.tags.find(topicTag => topicTag.value === tag)))
)).map(t => t.tid); )).map(t => t.tid);
const result = await plugins.hooks.fire('filter:topics.filterSortedTids', { tids: tids, params: params }); const result = await plugins.hooks.fire('filter:topics.filterSortedTids', { tids: tids, params: params });

Loading…
Cancel
Save