From 94361721b1756672dd07bf4dfd2ded8666b00af3 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 30 Jan 2024 12:11:33 -0500 Subject: [PATCH] fix: follower calls to return empty item list unless a page is explicitly passed in --- src/controllers/activitypub/index.js | 38 +++++++++++++++++++--------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/controllers/activitypub/index.js b/src/controllers/activitypub/index.js index 2aae681b93..d9a24742eb 100644 --- a/src/controllers/activitypub/index.js +++ b/src/controllers/activitypub/index.js @@ -12,37 +12,51 @@ Controller.topics = require('./topics'); Controller.getFollowing = async (req, res) => { const { followingCount: totalItems } = await user.getUserFields(req.params.uid, ['followingCount']); + let orderedItems; - const page = parseInt(req.query.page, 10) || 1; - const resultsPerPage = 50; - const start = Math.max(0, page - 1) * resultsPerPage; - const stop = start + resultsPerPage - 1; + if (req.query.page) { + const page = parseInt(req.query.page, 10) || 1; + const resultsPerPage = 50; + const start = Math.max(0, page - 1) * resultsPerPage; + const stop = start + resultsPerPage - 1; + + orderedItems = await user.getFollowing(req.params.uid, start, stop); + orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`); + } else { + orderedItems = []; + } - let orderedItems = await user.getFollowing(req.params.uid, start, stop); - orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`); res.status(200).json({ '@context': 'https://www.w3.org/ns/activitystreams', type: 'OrderedCollection', totalItems, orderedItems, + // next, todo... }); }; Controller.getFollowers = async (req, res) => { const { followerCount: totalItems } = await user.getUserFields(req.params.uid, ['followerCount']); + let orderedItems; - const page = parseInt(req.query.page, 10) || 1; - const resultsPerPage = 50; - const start = Math.max(0, page - 1) * resultsPerPage; - const stop = start + resultsPerPage - 1; + if (req.query.page) { + const page = parseInt(req.query.page, 10) || 1; + const resultsPerPage = 50; + const start = Math.max(0, page - 1) * resultsPerPage; + const stop = start + resultsPerPage - 1; + + orderedItems = await user.getFollowers(req.params.uid, start, stop); + orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`); + } else { + orderedItems = []; + } - let orderedItems = await user.getFollowers(req.params.uid, start, stop); - orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`); res.status(200).json({ '@context': 'https://www.w3.org/ns/activitystreams', type: 'OrderedCollection', totalItems, orderedItems, + // next, todo... }); };