1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-05 19:42:24 +02:00

Add ability to view my followers

This commit is contained in:
Chocobozzz 2021-10-19 09:44:43 +02:00
parent 9593a78ae1
commit 4beda9e12a
No known key found for this signature in database
GPG key ID: 583A612D890159BE
47 changed files with 799 additions and 248 deletions

View file

@ -1,5 +1,6 @@
import express from 'express'
import { pickCommonVideoQuery } from '@server/helpers/query'
import { ActorFollowModel } from '@server/models/actor/actor-follow'
import { getServerActor } from '@server/models/application/application'
import { buildNSFWFilter, getCountVideos, isUserAbleToSearchRemoteURI } from '../../helpers/express-utils'
import { getFormattedObjects } from '../../helpers/utils'
@ -20,6 +21,7 @@ import {
} from '../../middlewares'
import {
accountNameWithHostGetValidator,
accountsFollowersSortValidator,
accountsSortValidator,
ensureAuthUserOwnsAccountValidator,
videoChannelsSortValidator,
@ -93,6 +95,17 @@ accountsRouter.get('/:accountName/ratings',
asyncMiddleware(listAccountRatings)
)
accountsRouter.get('/:accountName/followers',
authenticate,
asyncMiddleware(accountNameWithHostGetValidator),
ensureAuthUserOwnsAccountValidator,
paginationValidator,
accountsFollowersSortValidator,
setDefaultSort,
setDefaultPagination,
asyncMiddleware(listAccountFollowers)
)
// ---------------------------------------------------------------------------
export {
@ -127,7 +140,7 @@ async function listAccountChannels (req: express.Request, res: express.Response)
search: req.query.search
}
const resultList = await VideoChannelModel.listByAccount(options)
const resultList = await VideoChannelModel.listByAccountForAPI(options)
return res.json(getFormattedObjects(resultList.data, resultList.total))
}
@ -195,3 +208,21 @@ async function listAccountRatings (req: express.Request, res: express.Response)
})
return res.json(getFormattedObjects(resultList.rows, resultList.count))
}
async function listAccountFollowers (req: express.Request, res: express.Response) {
const account = res.locals.account
const channels = await VideoChannelModel.listAllByAccount(account.id)
const actorIds = [ account.actorId ].concat(channels.map(c => c.actorId))
const resultList = await ActorFollowModel.listFollowersForApi({
actorIds,
start: req.query.start,
count: req.query.count,
sort: req.query.sort,
search: req.query.search,
state: 'accepted',
})
return res.json(getFormattedObjects(resultList.data, resultList.total))
}