From 74dd2844a0159b2937c1533d3d74c11b7ab35ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sat, 15 Jun 2024 13:36:13 -0400 Subject: [PATCH 1/2] refactor: remove exits check --- src/topics/events.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/topics/events.js b/src/topics/events.js index 13ab489c63..5d163f4977 100644 --- a/src/topics/events.js +++ b/src/topics/events.js @@ -111,10 +111,8 @@ function renderTimeago(event) { } Events.get = async (tid, uid, reverse = false) => { - const topics = require('.'); - - if (!await topics.exists(tid)) { - throw new Error('[[error:no-topic]]'); + if (!tid) { + return []; } let eventIds = await db.getSortedSetRangeWithScores(`topic:${tid}:events`, 0, -1); From 252d0df76ccf24586614702af65c2bcf5ec3f49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Sat, 15 Jun 2024 13:45:26 -0400 Subject: [PATCH 2/2] refactor: move getTopicData call to avoid db calls when its not in cache --- src/controllers/topics.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/controllers/topics.js b/src/controllers/topics.js index 1d8c49205e..6a3eba85c5 100644 --- a/src/controllers/topics.js +++ b/src/controllers/topics.js @@ -31,15 +31,17 @@ topicsController.get = async function getTopic(req, res, next) { return next(); } let postIndex = parseInt(req.params.post_index, 10) || 1; + const topicData = await topics.getTopicData(tid); + if (!topicData) { + return next(); + } const [ userPrivileges, settings, - topicData, rssToken, ] = await Promise.all([ privileges.topics.get(tid, req.uid), user.getSettings(req.uid), - topics.getTopicData(tid), user.auth.getFeedToken(req.uid), ]); @@ -47,7 +49,6 @@ topicsController.get = async function getTopic(req, res, next) { const pageCount = Math.max(1, Math.ceil((topicData && topicData.postcount) / settings.postsPerPage)); const invalidPagination = (settings.usePagination && (currentPage < 1 || currentPage > pageCount)); if ( - !topicData || userPrivileges.disabled || invalidPagination || (topicData.scheduled && !userPrivileges.view_scheduled) @@ -380,16 +381,14 @@ topicsController.pagination = async function (req, res, next) { if (!utils.isNumber(tid)) { return next(); } - - const [userPrivileges, settings, topic] = await Promise.all([ - privileges.topics.get(tid, req.uid), - user.getSettings(req.uid), - topics.getTopicData(tid), - ]); - + const topic = await topics.getTopicData(tid); if (!topic) { return next(); } + const [userPrivileges, settings] = await Promise.all([ + privileges.topics.get(tid, req.uid), + user.getSettings(req.uid), + ]); if (!userPrivileges.read || !privileges.topics.canViewDeletedScheduled(topic, userPrivileges)) { return helpers.notAllowed(req, res);