X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fshared%2Fvideo%2Fvideo-edit.model.ts;h=67d8e7711d550da06e9dae5a24b3ca98b964b058;hb=7b992a86b107fc2917b993127df8e95a66ae94db;hp=78aed4f9f8d92523f9b9d9cd42686213233f8901;hpb=bbe0f0645ca958d33a3f409b15166609733b663f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts index 78aed4f9f..67d8e7711 100644 --- a/client/src/app/shared/video/video-edit.model.ts +++ b/client/src/app/shared/video/video-edit.model.ts @@ -1,7 +1,7 @@ -import { VideoDetails } from './video-details.model' import { VideoPrivacy } from '../../../../../shared/models/videos/video-privacy.enum' import { VideoUpdate } from '../../../../../shared/models/videos' import { VideoScheduleUpdate } from '../../../../../shared/models/videos/video-schedule-update.model' +import { Video } from '../../../../../shared/models/videos/video.model' export class VideoEdit implements VideoUpdate { static readonly SPECIAL_SCHEDULED_PRIVACY = -1 @@ -14,6 +14,7 @@ export class VideoEdit implements VideoUpdate { tags: string[] nsfw: boolean commentsEnabled: boolean + downloadEnabled: boolean waitTranscoding: boolean channelId: number privacy: VideoPrivacy @@ -25,38 +26,49 @@ export class VideoEdit implements VideoUpdate { uuid?: string id?: number scheduleUpdate?: VideoScheduleUpdate + originallyPublishedAt?: Date | string - constructor (videoDetails?: VideoDetails) { - if (videoDetails) { - this.id = videoDetails.id - this.uuid = videoDetails.uuid - this.category = videoDetails.category.id - this.licence = videoDetails.licence.id - this.language = videoDetails.language.id - this.description = videoDetails.description - this.name = videoDetails.name - this.tags = videoDetails.tags - this.nsfw = videoDetails.nsfw - this.commentsEnabled = videoDetails.commentsEnabled - this.waitTranscoding = videoDetails.waitTranscoding - this.channelId = videoDetails.channel.id - this.privacy = videoDetails.privacy.id - this.support = videoDetails.support - this.thumbnailUrl = videoDetails.thumbnailUrl - this.previewUrl = videoDetails.previewUrl + 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 = videoDetails.scheduledUpdate + this.scheduleUpdate = video.scheduledUpdate + this.originallyPublishedAt = video.originallyPublishedAt ? new Date(video.originallyPublishedAt) : null } } - patch (values: Object) { + patch (values: { [ id: string ]: string }) { Object.keys(values).forEach((key) => { this[ key ] = values[ key ] }) // If schedule publication, the video is private and will be changed to public privacy - if (values['schedulePublicationAt']) { - const updateAt = (values['schedulePublicationAt'] as Date) + if (parseInt(values['privacy'], 10) === VideoEdit.SPECIAL_SCHEDULED_PRIVACY) { + const updateAt = new Date(values['schedulePublicationAt']) updateAt.setSeconds(0) this.privacy = VideoPrivacy.PRIVATE @@ -64,6 +76,19 @@ export class VideoEdit implements VideoUpdate { updateAt: updateAt.toISOString(), privacy: VideoPrivacy.PUBLIC } + } else { + this.scheduleUpdate = null + } + + // Convert originallyPublishedAt to string so that function objectToFormData() works correctly + if (this.originallyPublishedAt) { + const originallyPublishedAt = new Date(values['originallyPublishedAt']) + this.originallyPublishedAt = originallyPublishedAt.toISOString() + } + + // Use the same file than the preview for the thumbnail + if (this.previewfile) { + this.thumbnailfile = this.previewfile } } @@ -78,9 +103,11 @@ export class VideoEdit implements VideoUpdate { tags: this.tags, nsfw: this.nsfw, commentsEnabled: this.commentsEnabled, + downloadEnabled: this.downloadEnabled, waitTranscoding: this.waitTranscoding, channelId: this.channelId, - privacy: this.privacy + privacy: this.privacy, + originallyPublishedAt: this.originallyPublishedAt } // Special case if we scheduled an update