mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
feat: returning following and follower collections upon request
This commit is contained in:
@@ -11,9 +11,12 @@ Controller.actors = require('./actors');
|
||||
Controller.topics = require('./topics');
|
||||
|
||||
Controller.getFollowing = async (req, res) => {
|
||||
const { followingCount: totalItems } = await user.getUserFields(req.params.uid, ['followingCount']);
|
||||
const { followingCount, followingRemoteCount } = await user.getUserFields(req.params.uid, ['followingCount', 'followingRemoteCount']);
|
||||
const totalItems = parseInt(followingCount || 0, 10) + parseInt(followingRemoteCount || 0, 10);
|
||||
let orderedItems;
|
||||
let next = (totalItems && `${nconf.get('url')}/uid/${req.params.uid}/following?page=`) || null;
|
||||
|
||||
if (totalItems) {
|
||||
if (req.query.page) {
|
||||
const page = parseInt(req.query.page, 10) || 1;
|
||||
const resultsPerPage = 50;
|
||||
@@ -22,8 +25,15 @@ Controller.getFollowing = async (req, res) => {
|
||||
|
||||
orderedItems = await user.getFollowing(req.params.uid, start, stop);
|
||||
orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`);
|
||||
if (stop < totalItems - 1) {
|
||||
next = `${next}${page + 1}`;
|
||||
} else {
|
||||
next = null;
|
||||
}
|
||||
} else {
|
||||
orderedItems = [];
|
||||
next = `${next}1`;
|
||||
}
|
||||
}
|
||||
|
||||
res.status(200).json({
|
||||
@@ -31,14 +41,17 @@ Controller.getFollowing = async (req, res) => {
|
||||
type: 'OrderedCollection',
|
||||
totalItems,
|
||||
orderedItems,
|
||||
// next, todo...
|
||||
next,
|
||||
});
|
||||
};
|
||||
|
||||
Controller.getFollowers = async (req, res) => {
|
||||
const { followerCount: totalItems } = await user.getUserFields(req.params.uid, ['followerCount']);
|
||||
let orderedItems;
|
||||
const { followerCount, followerRemoteCount } = await user.getUserFields(req.params.uid, ['followerCount', 'followerRemoteCount']);
|
||||
const totalItems = parseInt(followerCount || 0, 10) + parseInt(followerRemoteCount || 0, 10);
|
||||
let orderedItems = [];
|
||||
let next = (totalItems && `${nconf.get('url')}/uid/${req.params.uid}/followers?page=`) || null;
|
||||
|
||||
if (totalItems) {
|
||||
if (req.query.page) {
|
||||
const page = parseInt(req.query.page, 10) || 1;
|
||||
const resultsPerPage = 50;
|
||||
@@ -47,8 +60,15 @@ Controller.getFollowers = async (req, res) => {
|
||||
|
||||
orderedItems = await user.getFollowers(req.params.uid, start, stop);
|
||||
orderedItems = orderedItems.map(({ userslug }) => `${nconf.get('url')}/user/${userslug}`);
|
||||
if (stop < totalItems - 1) {
|
||||
next = `${next}${page + 1}`;
|
||||
} else {
|
||||
next = null;
|
||||
}
|
||||
} else {
|
||||
orderedItems = [];
|
||||
next = `${next}1`;
|
||||
}
|
||||
}
|
||||
|
||||
res.status(200).json({
|
||||
@@ -56,7 +76,7 @@ Controller.getFollowers = async (req, res) => {
|
||||
type: 'OrderedCollection',
|
||||
totalItems,
|
||||
orderedItems,
|
||||
// next, todo...
|
||||
next,
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user