fix: follower calls to return empty item list unless a page is explicitly passed in

This commit is contained in:
Julian Lam
2024-01-30 12:11:33 -05:00
parent 6930973d7a
commit 94361721b1

View File

@@ -12,37 +12,51 @@ Controller.topics = require('./topics');
Controller.getFollowing = async (req, res) => { Controller.getFollowing = async (req, res) => {
const { followingCount: totalItems } = await user.getUserFields(req.params.uid, ['followingCount']); const { followingCount: totalItems } = await user.getUserFields(req.params.uid, ['followingCount']);
let orderedItems;
if (req.query.page) {
const page = parseInt(req.query.page, 10) || 1; const page = parseInt(req.query.page, 10) || 1;
const resultsPerPage = 50; const resultsPerPage = 50;
const start = Math.max(0, page - 1) * resultsPerPage; const start = Math.max(0, page - 1) * resultsPerPage;
const stop = start + resultsPerPage - 1; const stop = start + resultsPerPage - 1;
let orderedItems = await user.getFollowing(req.params.uid, start, stop); orderedItems = await user.getFollowing(req.params.uid, start, stop);
orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`); orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`);
} else {
orderedItems = [];
}
res.status(200).json({ res.status(200).json({
'@context': 'https://www.w3.org/ns/activitystreams', '@context': 'https://www.w3.org/ns/activitystreams',
type: 'OrderedCollection', type: 'OrderedCollection',
totalItems, totalItems,
orderedItems, orderedItems,
// next, todo...
}); });
}; };
Controller.getFollowers = async (req, res) => { Controller.getFollowers = async (req, res) => {
const { followerCount: totalItems } = await user.getUserFields(req.params.uid, ['followerCount']); const { followerCount: totalItems } = await user.getUserFields(req.params.uid, ['followerCount']);
let orderedItems;
if (req.query.page) {
const page = parseInt(req.query.page, 10) || 1; const page = parseInt(req.query.page, 10) || 1;
const resultsPerPage = 50; const resultsPerPage = 50;
const start = Math.max(0, page - 1) * resultsPerPage; const start = Math.max(0, page - 1) * resultsPerPage;
const stop = start + resultsPerPage - 1; const stop = start + resultsPerPage - 1;
let orderedItems = await user.getFollowers(req.params.uid, start, stop); orderedItems = await user.getFollowers(req.params.uid, start, stop);
orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`); orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`);
} else {
orderedItems = [];
}
res.status(200).json({ res.status(200).json({
'@context': 'https://www.w3.org/ns/activitystreams', '@context': 'https://www.w3.org/ns/activitystreams',
type: 'OrderedCollection', type: 'OrderedCollection',
totalItems, totalItems,
orderedItems, orderedItems,
// next, todo...
}); });
}; };