diff --git a/src/controllers/activitypub/topics.js b/src/controllers/activitypub/topics.js index b14abcc512..b2d1c25e7f 100644 --- a/src/controllers/activitypub/topics.js +++ b/src/controllers/activitypub/topics.js @@ -1,17 +1,17 @@ 'use strict'; const nconf = require('nconf'); +const _ = require('lodash'); const user = require('../../user'); const topics = require('../../topics'); - -const pagination = require('../../pagination'); -const helpers = require('../helpers'); - const categories = require('../../categories'); const privileges = require('../../privileges'); const translator = require('../../translator'); const meta = require('../../meta'); +const pagination = require('../../pagination'); +const utils = require('../../utils'); +const helpers = require('../helpers'); const controller = module.exports; @@ -57,6 +57,18 @@ controller.list = async function (req, res) { data.topics = await topics.getTopicsByTids(tids, { uid: req.uid }); topics.calculateTopicIndices(data.topics, start); + // Tracked/watched categories + let cids = await user.getCategoriesByStates(req.uid, [ + categories.watchStates.tracking, categories.watchStates.watching, + ]); + cids = cids.filter(cid => !utils.isNumber(cid)); + const categoryData = await categories.getCategories(cids); + data.categories = categories.getTree(categoryData, 0); + await Promise.all([ + categories.getRecentTopicReplies(categoryData, req.uid, req.query), + categories.setUnread(data.categories, cids, req.uid), + ]); + data.title = translator.escape(data.name); data.privileges = userPrivileges; data.selectedTag = tagData.selectedTag;