diff --git a/server/controllers/api/video-playlist.ts b/server/controllers/api/video-playlist.ts index 0a7ff92df..c7dfc583b 100644 --- a/server/controllers/api/video-playlist.ts +++ b/server/controllers/api/video-playlist.ts @@ -292,7 +292,7 @@ async function addVideoInPlaylist (req: express.Request, res: express.Response) videoId: video.id }, { transaction: t }) - videoPlaylist.updatedAt = new Date() + videoPlaylist.changed('updatedAt', true) await videoPlaylist.save({ transaction: t }) await sendUpdateVideoPlaylist(videoPlaylist, t) @@ -332,7 +332,7 @@ async function updateVideoPlaylistElement (req: express.Request, res: express.Re const element = await videoPlaylistElement.save({ transaction: t }) - videoPlaylist.updatedAt = new Date() + videoPlaylist.changed('updatedAt', true) await videoPlaylist.save({ transaction: t }) await sendUpdateVideoPlaylist(videoPlaylist, t) @@ -356,7 +356,7 @@ async function removeVideoFromPlaylist (req: express.Request, res: express.Respo // Decrease position of the next elements await VideoPlaylistElementModel.increasePositionOf(videoPlaylist.id, positionToDelete, null, -1, t) - videoPlaylist.updatedAt = new Date() + videoPlaylist.changed('updatedAt', true) await videoPlaylist.save({ transaction: t }) await sendUpdateVideoPlaylist(videoPlaylist, t) @@ -401,7 +401,7 @@ async function reorderVideosPlaylist (req: express.Request, res: express.Respons // Decrease positions of elements after the old position of our ordered elements (decrease) await VideoPlaylistElementModel.increasePositionOf(videoPlaylist.id, oldPosition, null, -reorderLength, t) - videoPlaylist.updatedAt = new Date() + videoPlaylist.changed('updatedAt', true) await videoPlaylist.save({ transaction: t }) await sendUpdateVideoPlaylist(videoPlaylist, t) diff --git a/server/tests/api/videos/video-playlists.ts b/server/tests/api/videos/video-playlists.ts index 931491406..358a064ff 100644 --- a/server/tests/api/videos/video-playlists.ts +++ b/server/tests/api/videos/video-playlists.ts @@ -664,6 +664,37 @@ describe('Test video playlists', function () { expect(obj[43000]).to.have.lengthOf(0) }) + it('Should automatically update updatedAt field of playlists', async function () { + const server = servers[1] + const videoId = servers[1].videos[5].id + + async function getPlaylistNames () { + const res = await getAccountPlaylistsListWithToken(server.url, server.accessToken, 'root', 0, 5, undefined, '-updatedAt') + + return (res.body.data as VideoPlaylist[]).map(p => p.displayName) + } + + const elementAttrs = { videoId } + await addVideoInPlaylist({ url: server.url, token: server.accessToken, playlistId: playlistServer2Id1, elementAttrs }) + await addVideoInPlaylist({ url: server.url, token: server.accessToken, playlistId: playlistServer2Id2, elementAttrs }) + + const names1 = await getPlaylistNames() + expect(names1[0]).to.equal('playlist 3 updated') + expect(names1[1]).to.equal('playlist 2') + + await removeVideoFromPlaylist({ url: server.url, token: server.accessToken, playlistId: playlistServer2Id1, videoId }) + + const names2 = await getPlaylistNames() + expect(names2[0]).to.equal('playlist 2') + expect(names2[1]).to.equal('playlist 3 updated') + + await removeVideoFromPlaylist({ url: server.url, token: server.accessToken, playlistId: playlistServer2Id2, videoId }) + + const names3 = await getPlaylistNames() + expect(names3[0]).to.equal('playlist 3 updated') + expect(names3[1]).to.equal('playlist 2') + }) + it('Should delete some elements', async function () { this.timeout(30000) diff --git a/shared/utils/videos/video-playlists.ts b/shared/utils/videos/video-playlists.ts index ad65bec56..7568852dc 100644 --- a/shared/utils/videos/video-playlists.ts +++ b/shared/utils/videos/video-playlists.ts @@ -68,14 +68,16 @@ function getAccountPlaylistsListWithToken ( accountName: string, start: number, count: number, - playlistType?: VideoPlaylistType + playlistType?: VideoPlaylistType, + sort?: string ) { const path = '/api/v1/accounts/' + accountName + '/video-playlists' const query = { start, count, - playlistType + playlistType, + sort } return makeGetRequest({