X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fshared-main%2Fvideo%2Fvideo-edit.model.ts;h=47eee80d8930c855db8d95d72e9d5980da70a389;hb=HEAD;hp=757b686c01149d31326839cd11f73cfa3bc84769;hpb=7294aab0c879ef96c0fde15c389a2c4c1463d3c7;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/shared-main/video/video-edit.model.ts b/client/src/app/shared/shared-main/video/video-edit.model.ts index 757b686c0..47eee80d8 100644 --- a/client/src/app/shared/shared-main/video/video-edit.model.ts +++ b/client/src/app/shared/shared-main/video/video-edit.model.ts @@ -1,4 +1,7 @@ -import { Video, VideoPrivacy, VideoScheduleUpdate, VideoUpdate } from '@shared/models' +import { getAbsoluteAPIUrl } from '@app/helpers' +import { VideoPrivacy, VideoScheduleUpdate, VideoUpdate } from '@shared/models' +import { VideoDetails } from './video-details.model' +import { objectKeysTyped } from '@shared/core-utils' export class VideoEdit implements VideoUpdate { static readonly SPECIAL_SCHEDULED_PRIVACY = -1 @@ -20,51 +23,52 @@ export class VideoEdit implements VideoUpdate { previewfile?: any thumbnailUrl: string previewUrl: string - uuid?: string - id?: number scheduleUpdate?: VideoScheduleUpdate originallyPublishedAt?: Date | string + id?: number + uuid?: string + shortUUID?: string + pluginData?: any - constructor ( - video?: Video & { - tags: string[], - commentsEnabled: boolean, - downloadEnabled: boolean, - support: string, - thumbnailUrl: string, - previewUrl: string - }) { - if (video) { - this.id = video.id - this.uuid = video.uuid - this.category = video.category.id - this.licence = video.licence.id - this.language = video.language.id - this.description = video.description - this.name = video.name - this.tags = video.tags - this.nsfw = video.nsfw - this.commentsEnabled = video.commentsEnabled - this.downloadEnabled = video.downloadEnabled - this.waitTranscoding = video.waitTranscoding - this.channelId = video.channel.id - this.privacy = video.privacy.id - this.support = video.support - this.thumbnailUrl = video.thumbnailUrl - this.previewUrl = video.previewUrl - - this.scheduleUpdate = video.scheduledUpdate - this.originallyPublishedAt = video.originallyPublishedAt ? new Date(video.originallyPublishedAt) : null - - this.pluginData = video.pluginData - } + constructor (video?: VideoDetails) { + if (!video) return + + this.id = video.id + this.uuid = video.uuid + this.shortUUID = video.shortUUID + this.category = video.category.id + this.licence = video.licence.id + this.language = video.language.id + this.description = video.description + this.name = video.name + this.tags = video.tags + this.nsfw = video.nsfw + this.waitTranscoding = video.waitTranscoding + this.channelId = video.channel.id + this.privacy = video.privacy.id + + this.support = video.support + + this.commentsEnabled = video.commentsEnabled + this.downloadEnabled = video.downloadEnabled + + if (video.thumbnailPath) this.thumbnailUrl = getAbsoluteAPIUrl() + video.thumbnailPath + if (video.previewPath) this.previewUrl = getAbsoluteAPIUrl() + video.previewPath + + this.scheduleUpdate = video.scheduledUpdate + this.originallyPublishedAt = video.originallyPublishedAt + ? new Date(video.originallyPublishedAt) + : null + + this.pluginData = video.pluginData } patch (values: { [ id: string ]: any }) { - Object.keys(values).forEach((key) => { - this[ key ] = values[ key ] + objectKeysTyped(values).forEach(key => { + // FIXME: typings + (this as any)[key] = values[key] }) // If schedule publication, the video is private and will be changed to public privacy @@ -83,7 +87,7 @@ export class VideoEdit implements VideoUpdate { // Convert originallyPublishedAt to string so that function objectToFormData() works correctly if (this.originallyPublishedAt) { - const originallyPublishedAt = new Date(values['originallyPublishedAt']) + const originallyPublishedAt = new Date(this.originallyPublishedAt) this.originallyPublishedAt = originallyPublishedAt.toISOString() }