From 8a60d9c2bc36825061c12ac60b589f1c6c2536a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 23 Feb 2026 16:01:06 -0500 Subject: [PATCH] perf: don't call getUids on every topic load only call if user is guest or spider and cid is -1 use .some instead of filtering entire array --- src/controllers/topics.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/controllers/topics.js b/src/controllers/topics.js index d5df96bf9e..178c38c869 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -41,12 +41,10 @@ topicsController.get = async function getTopic(req, res, next) { userPrivileges, settings, rssToken, - uids, ] = await Promise.all([ privileges.topics.get(tid, req.uid), user.getSettings(req.uid), user.auth.getFeedToken(req.uid), - topics.getUids(tid), ]); let currentPage = parseInt(req.query.page, 10) || 1; @@ -56,8 +54,7 @@ topicsController.get = async function getTopic(req, res, next) { userPrivileges.disabled || invalidPagination || (topicData.scheduled && !userPrivileges.view_scheduled) || - (!req.uid && (topicData.cid === -1 && !uids.filter(uid => utils.isNumber(uid)).length)) - ) { + await shouldHideTopicFromGuest(req.uid, tid, topicData.cid)) { return next(); } @@ -164,6 +161,12 @@ topicsController.get = async function getTopic(req, res, next) { res.render('topic', topicData); }; +async function shouldHideTopicFromGuest(uid, tid, cid) { + if (uid > 0 || cid !== -1) return false; + const uids = await topics.getUids(tid); + return !uids.some(uid => utils.isNumber(uid)); +} + function generateQueryString(query) { const qString = qs.stringify(query); return qString.length ? `?${qString}` : '';