Fix emptying video tags

pull/3815/head
Chocobozzz 2021-03-03 11:03:30 +01:00
parent 1ef447bd83
commit 6c9c3b7b14
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 15 additions and 18 deletions

View File

@ -347,12 +347,13 @@ async function updateVideo (req: express.Request, res: express.Response) {
if (previewModel) await videoInstanceUpdated.addAndSaveThumbnail(previewModel, t)
// Video tags update?
await setVideoTags({
video: videoInstanceUpdated,
tags: videoInfoToUpdate.tags,
transaction: t,
defaultValue: videoInstanceUpdated.Tags
})
if (videoInfoToUpdate.tags !== undefined) {
await setVideoTags({
video: videoInstanceUpdated,
tags: videoInfoToUpdate.tags,
transaction: t
})
}
// Video channel update?
if (res.locals.videoChannel && videoInstanceUpdated.channelId !== res.locals.videoChannel.id) {

View File

@ -440,7 +440,7 @@ async function updateVideoFromAP (options: {
const tags = videoObject.tag
.filter(isAPHashTagObject)
.map(tag => tag.name)
await setVideoTags({ video: videoUpdated, tags, transaction: t, defaultValue: videoUpdated.Tags })
await setVideoTags({ video: videoUpdated, tags, transaction: t })
}
// Update trackers

View File

@ -4,7 +4,7 @@ import { sequelizeTypescript } from '@server/initializers/database'
import { TagModel } from '@server/models/video/tag'
import { VideoModel } from '@server/models/video/video'
import { FilteredModelAttributes } from '@server/types'
import { MTag, MThumbnail, MUserId, MVideo, MVideoFile, MVideoTag, MVideoThumbnail, MVideoUUID } from '@server/types/models'
import { MThumbnail, MUserId, MVideo, MVideoFile, MVideoTag, MVideoThumbnail, MVideoUUID } from '@server/types/models'
import { ThumbnailType, VideoCreate, VideoPrivacy, VideoTranscodingPayload } from '@shared/models'
import { federateVideoIfNeeded } from './activitypub/videos'
import { JobQueue } from './job-queue/job-queue'
@ -69,18 +69,14 @@ async function setVideoTags (options: {
video: MVideoTag
tags: string[]
transaction?: Transaction
defaultValue?: MTag[]
}) {
const { video, tags, transaction, defaultValue } = options
// Set tags to the video
if (tags) {
const tagInstances = await TagModel.findOrCreateTags(tags, transaction)
const { video, tags, transaction } = options
await video.$set('Tags', tagInstances, { transaction })
video.Tags = tagInstances
} else {
video.Tags = defaultValue || []
}
const internalTags = tags || []
const tagInstances = await TagModel.findOrCreateTags(internalTags, transaction)
await video.$set('Tags', tagInstances, { transaction })
video.Tags = tagInstances
}
async function publishAndFederateIfNeeded (video: MVideoUUID, wasLive = false) {