From f3afba61568ad1ce1e302d00e80bdcfb48dba604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 25 May 2020 21:14:49 -0400 Subject: [PATCH] feat: filter followed tids by category --- src/topics/unread.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/topics/unread.js b/src/topics/unread.js index c08c3eb40a..6c82a5660d 100644 --- a/src/topics/unread.js +++ b/src/topics/unread.js @@ -177,9 +177,14 @@ module.exports = function (Topics) { } async function getFollowedTids(params) { - const tids = await db.getSortedSetsMembers(['uid:' + params.uid + ':followed_tids']); - const scores = await db.sortedSetScores('topics:recent', tids[0]); - const data = tids[0].map((tid, index) => ({ value: tid, score: scores[index] })); + let tids = (await db.getSortedSetsMembers(['uid:' + params.uid + ':followed_tids']))[0]; + const filterCids = params.cid && params.cid.map(cid => parseInt(cid, 10)); + if (filterCids) { + const topicData = await Topics.getTopicsFields(tids, ['tid', 'cid']); + tids = topicData.filter(t => filterCids.includes(t.cid)).map(t => t.tid); + } + const scores = await db.sortedSetScores('topics:recent', tids); + const data = tids.map((tid, index) => ({ value: tid, score: scores[index] })); return data.filter(item => item.score > params.cutoff); }