mirror of https://github.com/Chocobozzz/PeerTube
Fix emptying video tags
parent
1ef447bd83
commit
6c9c3b7b14
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue