diff --git a/src/controllers/activitypub/topics.js b/src/controllers/activitypub/topics.js index 8ab34613a9..5694625c1a 100644 --- a/src/controllers/activitypub/topics.js +++ b/src/controllers/activitypub/topics.js @@ -21,11 +21,22 @@ controller.list = async function (req, res) { const stop = start + topicsPerPage - 1; const tids = await db.getSortedSetRevRange('cid:-1:tids', start, stop); - const topicData = await topics.getTopicsByTids(tids, { uid: req.uid }); - topics.calculateTopicIndices(topicData, start); - res.render('world', { - topics: topicData, + + const data = {}; + data.topicCount = await db.sortedSetCard('cid:-1:tids'); + data.topics = await topics.getTopicsByTids(tids, { uid: req.uid }); + topics.calculateTopicIndices(data.topics, start); + + const pageCount = Math.max(1, Math.ceil(data.topicCount / topicsPerPage)); + data.pagination = pagination.create(page, pageCount, req.query); + helpers.addLinkTags({ + url: 'world', + res: req.res, + tags: data.pagination.rel, + page: page, }); + + res.render('world', data); }; controller.get = async function (req, res, next) { diff --git a/src/topics/index.js b/src/topics/index.js index 3d313d08e6..fbf21d0786 100644 --- a/src/topics/index.js +++ b/src/topics/index.js @@ -11,6 +11,7 @@ const meta = require('../meta'); const user = require('../user'); const categories = require('../categories'); const privileges = require('../privileges'); +const activitypub = require('../activitypub'); const social = require('../social'); const Topics = module.exports; @@ -69,8 +70,12 @@ Topics.getTopicsByTids = async function (tids, options) { async function loadTopics() { const topics = await Topics.getTopicsData(tids); - const uids = _.uniq(topics.map(t => t && t.uid && t.uid.toString()).filter(v => utils.isNumber(v))); - const cids = _.uniq(topics.map(t => t && t.cid && t.cid.toString()).filter(v => utils.isNumber(v))); + const uids = _.uniq(topics + .map(t => t && t.uid && t.uid.toString()) + .filter(v => utils.isNumber(v) || activitypub.helpers.isUri(v))); + const cids = _.uniq(topics + .map(t => t && t.cid && t.cid.toString()) + .filter(v => utils.isNumber(v) || activitypub.helpers.isUri(v))); const guestTopics = topics.filter(t => t && t.uid === 0); async function loadGuestHandles() {