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) if (previewModel) await videoInstanceUpdated.addAndSaveThumbnail(previewModel, t)
// Video tags update? // Video tags update?
if (videoInfoToUpdate.tags !== undefined) {
await setVideoTags({ await setVideoTags({
video: videoInstanceUpdated, video: videoInstanceUpdated,
tags: videoInfoToUpdate.tags, tags: videoInfoToUpdate.tags,
transaction: t, transaction: t
defaultValue: videoInstanceUpdated.Tags
}) })
}
// Video channel update? // Video channel update?
if (res.locals.videoChannel && videoInstanceUpdated.channelId !== res.locals.videoChannel.id) { if (res.locals.videoChannel && videoInstanceUpdated.channelId !== res.locals.videoChannel.id) {

View File

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

View File

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