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:
parent
3e84ae3250
commit
e2e0b645cd
|
@ -43,6 +43,7 @@ import {
|
||||||
import { AccountModel } from '../../models/account/account'
|
import { AccountModel } from '../../models/account/account'
|
||||||
import { VideoPlaylistModel } from '../../models/video/video-playlist'
|
import { VideoPlaylistModel } from '../../models/video/video-playlist'
|
||||||
import { VideoPlaylistElementModel } from '../../models/video/video-playlist-element'
|
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 })
|
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)
|
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({
|
return res.json({
|
||||||
videoPlaylistElement: {
|
videoPlaylistElement: {
|
||||||
id: playlistElement.id
|
id: playlistElement.id
|
||||||
|
|
|
@ -19,7 +19,9 @@ async function register ({ registerHook, registerSetting, settingsManager, stora
|
||||||
'action:api.user.created',
|
'action:api.user.created',
|
||||||
'action:api.user.deleted',
|
'action:api.user.deleted',
|
||||||
'action:api.user.updated',
|
'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) {
|
for (const h of actionHooks) {
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
|
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
|
||||||
|
|
||||||
import 'mocha'
|
import 'mocha'
|
||||||
import { ServerHookName, VideoPrivacy } from '@shared/models'
|
import { ServerHookName, VideoPlaylistPrivacy, VideoPrivacy } from '@shared/models'
|
||||||
import {
|
import {
|
||||||
addVideoCommentReply,
|
addVideoCommentReply,
|
||||||
addVideoCommentThread,
|
addVideoCommentThread,
|
||||||
|
addVideoInPlaylist,
|
||||||
blockUser,
|
blockUser,
|
||||||
createLive,
|
createLive,
|
||||||
createUser,
|
createUser,
|
||||||
|
createVideoPlaylist,
|
||||||
deleteVideoComment,
|
deleteVideoComment,
|
||||||
getPluginTestPath,
|
getPluginTestPath,
|
||||||
installPlugin,
|
installPlugin,
|
||||||
|
@ -69,6 +71,7 @@ describe('Test plugin action hooks', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('Videos hooks', function () {
|
describe('Videos hooks', function () {
|
||||||
|
|
||||||
it('Should run action:api.video.uploaded', async function () {
|
it('Should run action:api.video.uploaded', async function () {
|
||||||
const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video' })
|
const res = await uploadVideo(servers[0].url, servers[0].accessToken, { name: 'video' })
|
||||||
videoUUID = res.body.video.uuid
|
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 () {
|
after(async function () {
|
||||||
await cleanupTests(servers)
|
await cleanupTests(servers)
|
||||||
})
|
})
|
||||||
|
|
|
@ -114,7 +114,10 @@ export const serverActionHookObject = {
|
||||||
'action:api.user.updated': true,
|
'action:api.user.updated': true,
|
||||||
|
|
||||||
// Fired when a user got a new oauth2 token
|
// 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
|
export type ServerActionHookName = keyof typeof serverActionHookObject
|
||||||
|
|
Loading…
Reference in New Issue