X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fusers%2Fmy-subscriptions.ts;h=6799ca8c510bccc9d3ea7cf6405a78af065509f1;hb=3c10840fa90fc88fc98e8169faf4745ff6c80893;hp=66b33c477f0ddd2f57b5ccd3bdc56b04f75db6e5;hpb=ea3674d04dd0a67962224073256dc7d4173527a5;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/users/my-subscriptions.ts b/server/controllers/api/users/my-subscriptions.ts index 66b33c477..6799ca8c5 100644 --- a/server/controllers/api/users/my-subscriptions.ts +++ b/server/controllers/api/users/my-subscriptions.ts @@ -1,6 +1,10 @@ import 'multer' -import * as express from 'express' -import { VideoFilter } from '../../../../shared/models/videos/video-query.type' +import express from 'express' +import { pickCommonVideoQuery } from '@server/helpers/query' +import { sendUndoFollow } from '@server/lib/activitypub/send' +import { guessAdditionalAttributesFromQuery } from '@server/models/video/formatter/video-format-utils' +import { VideoChannelModel } from '@server/models/video/video-channel' +import { HttpStatusCode } from '../../../../shared/models/http/http-error-codes' import { buildNSFWFilter, getCountVideos } from '../../../helpers/express-utils' import { getFormattedObjects } from '../../../helpers/utils' import { WEBSERVER } from '../../../initializers/constants' @@ -24,9 +28,8 @@ import { userSubscriptionsSortValidator, videosSortValidator } from '../../../middlewares/validators' -import { ActorFollowModel } from '../../../models/activitypub/actor-follow' +import { ActorFollowModel } from '../../../models/actor/actor-follow' import { VideoModel } from '../../../models/video/video' -import { sendUndoFollow } from '@server/lib/activitypub/send' const mySubscriptionsRouter = express.Router() @@ -65,7 +68,7 @@ mySubscriptionsRouter.post('/me/subscriptions', mySubscriptionsRouter.get('/me/subscriptions/:uri', authenticate, userSubscriptionGetValidator, - getUserSubscription + asyncMiddleware(getUserSubscription) ) mySubscriptionsRouter.delete('/me/subscriptions/:uri', @@ -93,7 +96,7 @@ async function areSubscriptionsExist (req: express.Request, res: express.Respons return { name, host, uri: u } }) - const results = await ActorFollowModel.listSubscribedIn(user.Account.Actor.id, handles) + const results = await ActorFollowModel.listSubscriptionsOf(user.Account.Actor.id, handles) const existObject: { [id: string ]: boolean } = {} for (const handle of handles) { @@ -126,13 +129,14 @@ function addUserSubscription (req: express.Request, res: express.Response) { JobQueue.Instance.createJob({ type: 'activitypub-follow', payload }) - return res.status(204).end() + return res.status(HttpStatusCode.NO_CONTENT_204).end() } -function getUserSubscription (req: express.Request, res: express.Response) { +async function getUserSubscription (req: express.Request, res: express.Response) { const subscription = res.locals.subscription + const videoChannel = await VideoChannelModel.loadAndPopulateAccount(subscription.ActorFollowing.VideoChannel.id) - return res.json(subscription.ActorFollowing.VideoChannel.toFormattedJSON()) + return res.json(videoChannel.toFormattedJSON()) } async function deleteUserSubscription (req: express.Request, res: express.Response) { @@ -144,7 +148,9 @@ async function deleteUserSubscription (req: express.Request, res: express.Respon return subscription.destroy({ transaction: t }) }) - return res.type('json').status(204).end() + return res.type('json') + .status(HttpStatusCode.NO_CONTENT_204) + .end() } async function getUserSubscriptions (req: express.Request, res: express.Response) { @@ -165,24 +171,19 @@ async function getUserSubscriptions (req: express.Request, res: express.Response async function getUserSubscriptionVideos (req: express.Request, res: express.Response) { const user = res.locals.oauth.token.User const countVideos = getCountVideos(req) + const query = pickCommonVideoQuery(req.query) const resultList = await VideoModel.listForApi({ - start: req.query.start, - count: req.query.count, - sort: req.query.sort, - includeLocalVideos: false, - categoryOneOf: req.query.categoryOneOf, - licenceOneOf: req.query.licenceOneOf, - languageOneOf: req.query.languageOneOf, - tagsOneOf: req.query.tagsOneOf, - tagsAllOf: req.query.tagsAllOf, - nsfw: buildNSFWFilter(res, req.query.nsfw), - filter: req.query.filter as VideoFilter, - withFiles: false, - followerActorId: user.Account.Actor.id, + ...query, + + displayOnlyForFollower: { + actorId: user.Account.Actor.id, + orLocalVideos: false + }, + nsfw: buildNSFWFilter(res, query.nsfw), user, countVideos }) - return res.json(getFormattedObjects(resultList.data, resultList.total)) + return res.json(getFormattedObjects(resultList.data, resultList.total, guessAdditionalAttributesFromQuery(query))) }