diff --git a/src/categories/topics.js b/src/categories/topics.js index 49361fdcad..8dbe3501ef 100644 --- a/src/categories/topics.js +++ b/src/categories/topics.js @@ -134,10 +134,6 @@ module.exports = function (Categories) { }; Categories.getPinnedTids = async function (data) { - if (!Array.isArray(data.cid)) { - data.cid = [data.cid]; - } - if (plugins.hasListeners('filter:categories.getPinnedTids')) { const result = await plugins.fireHook('filter:categories.getPinnedTids', { pinnedTids: [], @@ -145,10 +141,8 @@ module.exports = function (Categories) { }); return result && result.pinnedTids; } - - const pinnedSets = data.cid.map(cid => `cid:${cid}:tids:pinned`); - const pinnedTids = await db.getSortedSetRevRange(pinnedSets, data.start, data.stop); - return topics.tools.checkPinExpiry(pinnedTids); + const pinnedTids = await db.getSortedSetRevRange('cid:' + data.cid + ':tids:pinned', data.start, data.stop); + return await topics.tools.checkPinExpiry(pinnedTids); }; Categories.modifyTopicsByPrivilege = function (topics, privileges) { diff --git a/src/topics/sorted.js b/src/topics/sorted.js index 6dd7619620..ea405247a3 100644 --- a/src/topics/sorted.js +++ b/src/topics/sorted.js @@ -57,21 +57,18 @@ module.exports = function (Topics) { async function getCidTids(params) { const sets = []; + const pinnedSets = []; params.cids.forEach(function (cid) { if (params.sort === 'recent') { sets.push('cid:' + cid + ':tids'); } else { sets.push('cid:' + cid + ':tids' + (params.sort ? ':' + params.sort : '')); } + pinnedSets.push('cid:' + cid + ':tids:pinned'); }); - const [tids, pinnedTids] = await Promise.all([ - db.getSortedSetRevRange(sets, 0, meta.config.recentMaxTopics - 1), - categories.getPinnedTids({ - cid: params.cids, - start: 0, - stop: -1, - }), - ]); + let pinnedTids = await db.getSortedSetRevRange(pinnedSets, 0, -1); + pinnedTids = await Topics.tools.checkPinExpiry(pinnedTids); + const tids = await db.getSortedSetRevRange(sets, 0, meta.config.recentMaxTopics - 1); return pinnedTids.concat(tids); }