Add video-playlist-element.created hook (#4196)

* add playlists.videos.list.params/results hooks

closes #4192

* Revert "add playlists.videos.list.params/results hooks"

This reverts commit ebd822ca0b.

* add video-playlist-element.created hook

closes #4192

* test: add playlist-element.created

* Fix tests

Co-authored-by: Chocobozzz <me@florianbigard.com>
This commit is contained in:
kontrollanten 2021-06-28 09:22:15 +02:00 committed by GitHub
parent 3e84ae3250
commit e2e0b645cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 3 deletions

View File

@ -43,6 +43,7 @@ import {
import { AccountModel } from '../../models/account/account'
import { VideoPlaylistModel } from '../../models/video/video-playlist'
import { VideoPlaylistElementModel } from '../../models/video/video-playlist-element'
import { Hooks } from '@server/lib/plugins/hooks'
const reqThumbnailFile = createReqFiles([ 'thumbnailfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { thumbnailfile: CONFIG.STORAGE.TMP_DIR })
@ -330,6 +331,8 @@ async function addVideoInPlaylist (req: express.Request, res: express.Response)
logger.info('Video added in playlist %s at position %d.', videoPlaylist.uuid, playlistElement.position)
Hooks.runAction('action:api.video-playlist-element.created', { playlistElement })
return res.json({
videoPlaylistElement: {
id: playlistElement.id

View File

@ -19,7 +19,9 @@ async function register ({ registerHook, registerSetting, settingsManager, stora
'action:api.user.created',
'action:api.user.deleted',
'action:api.user.updated',
'action:api.user.oauth2-got-token'
'action:api.user.oauth2-got-token',
'action:api.video-playlist-element.created'
]
for (const h of actionHooks) {

View File

@ -1,13 +1,15 @@
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
import 'mocha'
import { ServerHookName, VideoPrivacy } from '@shared/models'
import { ServerHookName, VideoPlaylistPrivacy, VideoPrivacy } from '@shared/models'
import {
addVideoCommentReply,
addVideoCommentThread,
addVideoInPlaylist,
blockUser,
createLive,
createUser,
createVideoPlaylist,
deleteVideoComment,
getPluginTestPath,
installPlugin,
@ -69,6 +71,7 @@ describe('Test plugin action hooks', function () {
})
describe('Videos hooks', function () {
it('Should run action:api.video.uploaded', async function () {
const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video' })
videoUUID = res.body.video.uuid
@ -177,6 +180,41 @@ describe('Test plugin action hooks', function () {
})
})
describe('Playlist hooks', function () {
let playlistId: number
let videoId: number
before(async function () {
{
const res = await createVideoPlaylist({
url: servers[0].url,
token: servers[0].accessToken,
playlistAttrs: {
displayName: 'My playlist',
privacy: VideoPlaylistPrivacy.PRIVATE
}
})
playlistId = res.body.videoPlaylist.id
}
{
const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'my super name' })
videoId = res.body.video.id
}
})
it('Should run action:api.video-playlist-element.created', async function () {
await addVideoInPlaylist({
url: servers[0].url,
token: servers[0].accessToken,
playlistId,
elementAttrs: { videoId }
})
await checkHook('action:api.video-playlist-element.created')
})
})
after(async function () {
await cleanupTests(servers)
})

View File

@ -114,7 +114,10 @@ export const serverActionHookObject = {
'action:api.user.updated': true,
// Fired when a user got a new oauth2 token
'action:api.user.oauth2-got-token': true
'action:api.user.oauth2-got-token': true,
// Fired when a video is added to a playlist
'action:api.video-playlist-element.created': true
}
export type ServerActionHookName = keyof typeof serverActionHookObject