X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Fcontrollers%2Fapi%2Fserver%2Ffollows.ts;h=517d1897ecd0ee531e50f654f537adf576e16ba0;hb=de94ac86a211dec657332d964693857ec235ce40;hp=d38ce91debdde0aa5979c8f1a1798447806db784;hpb=74dc3bca2b14f5fd3fe80c394dfc34177a46db77;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/server/follows.ts b/server/controllers/api/server/follows.ts index d38ce91de..517d1897e 100644 --- a/server/controllers/api/server/follows.ts +++ b/server/controllers/api/server/follows.ts @@ -1,7 +1,7 @@ import * as express from 'express' import { UserRight } from '../../../../shared/models/users' import { logger } from '../../../helpers/logger' -import { getFormattedObjects, getServerActor } from '../../../helpers/utils' +import { getFormattedObjects } from '../../../helpers/utils' import { SERVER_ACTOR_NAME } from '../../../initializers/constants' import { sendAccept, sendReject, sendUndoFollow } from '../../../lib/activitypub/send' import { @@ -19,15 +19,19 @@ import { followingSortValidator, followValidator, getFollowerValidator, - removeFollowingValidator + removeFollowingValidator, + listFollowsValidator } from '../../../middlewares/validators' import { ActorFollowModel } from '../../../models/activitypub/actor-follow' import { JobQueue } from '../../../lib/job-queue' -import { removeRedundancyOf } from '../../../lib/redundancy' +import { removeRedundanciesOfServer } from '../../../lib/redundancy' import { sequelizeTypescript } from '../../../initializers/database' +import { autoFollowBackIfNeeded } from '../../../lib/activitypub/follow' +import { getServerActor } from '@server/models/application/application' const serverFollowsRouter = express.Router() serverFollowsRouter.get('/following', + listFollowsValidator, paginationValidator, followingSortValidator, setDefaultSort, @@ -51,6 +55,7 @@ serverFollowsRouter.delete('/following/:host', ) serverFollowsRouter.get('/followers', + listFollowsValidator, paginationValidator, followersSortValidator, setDefaultSort, @@ -91,26 +96,30 @@ export { async function listFollowing (req: express.Request, res: express.Response) { const serverActor = await getServerActor() - const resultList = await ActorFollowModel.listFollowingForApi( - serverActor.id, - req.query.start, - req.query.count, - req.query.sort, - req.query.search - ) + const resultList = await ActorFollowModel.listFollowingForApi({ + id: serverActor.id, + start: req.query.start, + count: req.query.count, + sort: req.query.sort, + search: req.query.search, + actorType: req.query.actorType, + state: req.query.state + }) return res.json(getFormattedObjects(resultList.data, resultList.total)) } async function listFollowers (req: express.Request, res: express.Response) { const serverActor = await getServerActor() - const resultList = await ActorFollowModel.listFollowersForApi( - serverActor.id, - req.query.start, - req.query.count, - req.query.sort, - req.query.search - ) + const resultList = await ActorFollowModel.listFollowersForApi({ + actorId: serverActor.id, + start: req.query.start, + count: req.query.count, + sort: req.query.sort, + search: req.query.search, + actorType: req.query.actorType, + state: req.query.state + }) return res.json(getFormattedObjects(resultList.data, resultList.total)) } @@ -127,7 +136,6 @@ async function followInstance (req: express.Request, res: express.Response) { } JobQueue.Instance.createJob({ type: 'activitypub-follow', payload }) - .catch(err => logger.error('Cannot create follow job for %s.', host, err)) } return res.status(204).end() @@ -145,7 +153,7 @@ async function removeFollowing (req: express.Request, res: express.Response) { await server.save({ transaction: t }) // Async, could be long - removeRedundancyOf(server.id) + removeRedundanciesOfServer(server.id) .catch(err => logger.error('Cannot remove redundancy of %s.', server.host, err)) await follow.destroy({ transaction: t }) @@ -157,7 +165,7 @@ async function removeFollowing (req: express.Request, res: express.Response) { async function removeOrRejectFollower (req: express.Request, res: express.Response) { const follow = res.locals.follow - await sendReject(follow.ActorFollower, follow.ActorFollowing) + await sendReject(follow.url, follow.ActorFollower, follow.ActorFollowing) await follow.destroy() @@ -172,5 +180,7 @@ async function acceptFollower (req: express.Request, res: express.Response) { follow.state = 'accepted' await follow.save() + await autoFollowBackIfNeeded(follow) + return res.status(204).end() }