From f0a3988066f72a28bb44520af072f18d91d77dde Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 7 Mar 2019 17:06:00 +0100 Subject: Add to playlist dropdown --- server/controllers/api/users/index.ts | 2 + server/controllers/api/users/my-video-playlists.ts | 47 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 server/controllers/api/users/my-video-playlists.ts (limited to 'server/controllers/api/users') diff --git a/server/controllers/api/users/index.ts b/server/controllers/api/users/index.ts index 5758c8227..f7edbddf3 100644 --- a/server/controllers/api/users/index.ts +++ b/server/controllers/api/users/index.ts @@ -38,6 +38,7 @@ import { auditLoggerFactory, getAuditIdFromRes, UserAuditView } from '../../../h import { meRouter } from './me' import { deleteUserToken } from '../../../lib/oauth-model' import { myBlocklistRouter } from './my-blocklist' +import { myVideoPlaylistsRouter } from './my-video-playlists' import { myVideosHistoryRouter } from './my-history' import { myNotificationsRouter } from './my-notifications' import { Notifier } from '../../../lib/notifier' @@ -60,6 +61,7 @@ usersRouter.use('/', myNotificationsRouter) usersRouter.use('/', mySubscriptionsRouter) usersRouter.use('/', myBlocklistRouter) usersRouter.use('/', myVideosHistoryRouter) +usersRouter.use('/', myVideoPlaylistsRouter) usersRouter.use('/', meRouter) usersRouter.get('/autocomplete', diff --git a/server/controllers/api/users/my-video-playlists.ts b/server/controllers/api/users/my-video-playlists.ts new file mode 100644 index 000000000..1ec175f64 --- /dev/null +++ b/server/controllers/api/users/my-video-playlists.ts @@ -0,0 +1,47 @@ +import * as express from 'express' +import { asyncMiddleware, authenticate } from '../../../middlewares' +import { UserModel } from '../../../models/account/user' +import { doVideosInPlaylistExistValidator } from '../../../middlewares/validators/videos/video-playlists' +import { VideoPlaylistModel } from '../../../models/video/video-playlist' +import { VideoExistInPlaylist } from '../../../../shared/models/videos/playlist/video-exist-in-playlist.model' + +const myVideoPlaylistsRouter = express.Router() + +myVideoPlaylistsRouter.get('/me/video-playlists/videos-exist', + authenticate, + doVideosInPlaylistExistValidator, + asyncMiddleware(doVideosInPlaylistExist) +) + +// --------------------------------------------------------------------------- + +export { + myVideoPlaylistsRouter +} + +// --------------------------------------------------------------------------- + +async function doVideosInPlaylistExist (req: express.Request, res: express.Response) { + const videoIds = req.query.videoIds as number[] + const user = res.locals.oauth.token.User as UserModel + + const results = await VideoPlaylistModel.listPlaylistIdsOf(user.Account.id, videoIds) + + const existObject: VideoExistInPlaylist = {} + + for (const videoId of videoIds) { + existObject[videoId] = [] + } + + for (const result of results) { + for (const element of result.VideoPlaylistElements) { + existObject[element.videoId].push({ + playlistId: result.id, + startTimestamp: element.startTimestamp, + stopTimestamp: element.stopTimestamp + }) + } + } + + return res.json(existObject) +} -- cgit v1.2.3