diff options
author | Chocobozzz <me@florianbigard.com> | 2018-06-15 16:52:15 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-06-15 18:20:56 +0200 |
commit | bbe0f0645ca958d33a3f409b15166609733b663f (patch) | |
tree | edcd5d702c73cda74a2177c4bdc08c616334337d /client/src/app/shared/video/video-edit.model.ts | |
parent | 2baea0c77cc765f7cbca9c9a2f4272268892a35c (diff) | |
download | PeerTube-bbe0f0645ca958d33a3f409b15166609733b663f.tar.gz PeerTube-bbe0f0645ca958d33a3f409b15166609733b663f.tar.zst PeerTube-bbe0f0645ca958d33a3f409b15166609733b663f.zip |
Add ability to schedule video publication
Diffstat (limited to 'client/src/app/shared/video/video-edit.model.ts')
-rw-r--r-- | client/src/app/shared/video/video-edit.model.ts | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts index f045a3acd..78aed4f9f 100644 --- a/client/src/app/shared/video/video-edit.model.ts +++ b/client/src/app/shared/video/video-edit.model.ts | |||
@@ -1,8 +1,11 @@ | |||
1 | import { VideoDetails } from './video-details.model' | 1 | import { VideoDetails } from './video-details.model' |
2 | import { VideoPrivacy } from '../../../../../shared/models/videos/video-privacy.enum' | 2 | import { VideoPrivacy } from '../../../../../shared/models/videos/video-privacy.enum' |
3 | import { VideoUpdate } from '../../../../../shared/models/videos' | 3 | import { VideoUpdate } from '../../../../../shared/models/videos' |
4 | import { VideoScheduleUpdate } from '../../../../../shared/models/videos/video-schedule-update.model' | ||
4 | 5 | ||
5 | export class VideoEdit implements VideoUpdate { | 6 | export class VideoEdit implements VideoUpdate { |
7 | static readonly SPECIAL_SCHEDULED_PRIVACY = -1 | ||
8 | |||
6 | category: number | 9 | category: number |
7 | licence: number | 10 | licence: number |
8 | language: string | 11 | language: string |
@@ -21,6 +24,7 @@ export class VideoEdit implements VideoUpdate { | |||
21 | previewUrl: string | 24 | previewUrl: string |
22 | uuid?: string | 25 | uuid?: string |
23 | id?: number | 26 | id?: number |
27 | scheduleUpdate?: VideoScheduleUpdate | ||
24 | 28 | ||
25 | constructor (videoDetails?: VideoDetails) { | 29 | constructor (videoDetails?: VideoDetails) { |
26 | if (videoDetails) { | 30 | if (videoDetails) { |
@@ -40,6 +44,8 @@ export class VideoEdit implements VideoUpdate { | |||
40 | this.support = videoDetails.support | 44 | this.support = videoDetails.support |
41 | this.thumbnailUrl = videoDetails.thumbnailUrl | 45 | this.thumbnailUrl = videoDetails.thumbnailUrl |
42 | this.previewUrl = videoDetails.previewUrl | 46 | this.previewUrl = videoDetails.previewUrl |
47 | |||
48 | this.scheduleUpdate = videoDetails.scheduledUpdate | ||
43 | } | 49 | } |
44 | } | 50 | } |
45 | 51 | ||
@@ -47,10 +53,22 @@ export class VideoEdit implements VideoUpdate { | |||
47 | Object.keys(values).forEach((key) => { | 53 | Object.keys(values).forEach((key) => { |
48 | this[ key ] = values[ key ] | 54 | this[ key ] = values[ key ] |
49 | }) | 55 | }) |
56 | |||
57 | // If schedule publication, the video is private and will be changed to public privacy | ||
58 | if (values['schedulePublicationAt']) { | ||
59 | const updateAt = (values['schedulePublicationAt'] as Date) | ||
60 | updateAt.setSeconds(0) | ||
61 | |||
62 | this.privacy = VideoPrivacy.PRIVATE | ||
63 | this.scheduleUpdate = { | ||
64 | updateAt: updateAt.toISOString(), | ||
65 | privacy: VideoPrivacy.PUBLIC | ||
66 | } | ||
67 | } | ||
50 | } | 68 | } |
51 | 69 | ||
52 | toJSON () { | 70 | toFormPatch () { |
53 | return { | 71 | const json = { |
54 | category: this.category, | 72 | category: this.category, |
55 | licence: this.licence, | 73 | licence: this.licence, |
56 | language: this.language, | 74 | language: this.language, |
@@ -64,5 +82,15 @@ export class VideoEdit implements VideoUpdate { | |||
64 | channelId: this.channelId, | 82 | channelId: this.channelId, |
65 | privacy: this.privacy | 83 | privacy: this.privacy |
66 | } | 84 | } |
85 | |||
86 | // Special case if we scheduled an update | ||
87 | if (this.scheduleUpdate) { | ||
88 | Object.assign(json, { | ||
89 | privacy: VideoEdit.SPECIAL_SCHEDULED_PRIVACY, | ||
90 | schedulePublicationAt: new Date(this.scheduleUpdate.updateAt.toString()) | ||
91 | }) | ||
92 | } | ||
93 | |||
94 | return json | ||
67 | } | 95 | } |
68 | } | 96 | } |