-import * as express from 'express'
+import express from 'express'
+import memoizee from 'memoizee'
+import { logger } from '@server/helpers/logger'
+import { Hooks } from '@server/lib/plugins/hooks'
+import { VideoModel } from '@server/models/video/video'
+import { CategoryOverview, ChannelOverview, TagOverview, VideosOverview } from '../../../shared/models/overviews'
import { buildNSFWFilter } from '../../helpers/express-utils'
-import { VideoModel } from '../../models/video/video'
+import { MEMOIZE_TTL, OVERVIEWS } from '../../initializers/constants'
import { asyncMiddleware, optionalAuthenticate, videosOverviewValidator } from '../../middlewares'
import { TagModel } from '../../models/video/tag'
-import { CategoryOverview, ChannelOverview, TagOverview, VideosOverview } from '../../../shared/models/overviews'
-import { MEMOIZE_TTL, OVERVIEWS } from '../../initializers/constants'
-import * as memoizee from 'memoizee'
-import { logger } from '@server/helpers/logger'
+import { getServerActor } from '@server/models/application/application'
const overviewsRouter = express.Router()
res: express.Response,
where: { videoChannelId?: number, tagsOneOf?: string[], categoryOneOf?: number[] }
) {
- const query = Object.assign({
+ const serverActor = await getServerActor()
+
+ const query = await Hooks.wrapObject({
start: 0,
count: 12,
sort: '-createdAt',
- includeLocalVideos: true,
+ displayOnlyForFollower: {
+ actorId: serverActor.id,
+ orLocalVideos: true
+ },
nsfw: buildNSFWFilter(res),
- withFiles: false,
- countVideos: false
- }, where)
+ user: res.locals.oauth ? res.locals.oauth.token.User : undefined,
+ countVideos: false,
+
+ ...where
+ }, 'filter:api.overviews.videos.list.params')
- const { data } = await VideoModel.listForApi(query)
+ const { data } = await Hooks.wrapPromiseFun(
+ VideoModel.listForApi,
+ query,
+ 'filter:api.overviews.videos.list.result'
+ )
return data.map(d => d.toFormattedJSON())
}