diff options
Diffstat (limited to 'client/src/app/+videos/+video-edit/shared')
4 files changed, 71 insertions, 4 deletions
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit-utils.ts b/client/src/app/+videos/+video-edit/shared/video-edit-utils.ts new file mode 100644 index 000000000..3a7dbed36 --- /dev/null +++ b/client/src/app/+videos/+video-edit/shared/video-edit-utils.ts | |||
@@ -0,0 +1,35 @@ | |||
1 | import { FormGroup } from '@angular/forms' | ||
2 | import { VideoEdit } from '@app/shared/shared-main' | ||
3 | |||
4 | function hydrateFormFromVideo (formGroup: FormGroup, video: VideoEdit, thumbnailFiles: boolean) { | ||
5 | formGroup.patchValue(video.toFormPatch()) | ||
6 | |||
7 | if (thumbnailFiles === false) return | ||
8 | |||
9 | const objects = [ | ||
10 | { | ||
11 | url: 'thumbnailUrl', | ||
12 | name: 'thumbnailfile' | ||
13 | }, | ||
14 | { | ||
15 | url: 'previewUrl', | ||
16 | name: 'previewfile' | ||
17 | } | ||
18 | ] | ||
19 | |||
20 | for (const obj of objects) { | ||
21 | if (!video[obj.url]) continue | ||
22 | |||
23 | fetch(video[obj.url]) | ||
24 | .then(response => response.blob()) | ||
25 | .then(data => { | ||
26 | formGroup.patchValue({ | ||
27 | [ obj.name ]: data | ||
28 | }) | ||
29 | }) | ||
30 | } | ||
31 | } | ||
32 | |||
33 | export { | ||
34 | hydrateFormFromVideo | ||
35 | } | ||
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.component.html b/client/src/app/+videos/+video-edit/shared/video-edit.component.html index 842997b20..c444dd8d3 100644 --- a/client/src/app/+videos/+video-edit/shared/video-edit.component.html +++ b/client/src/app/+videos/+video-edit/shared/video-edit.component.html | |||
@@ -195,6 +195,29 @@ | |||
195 | </ng-template> | 195 | </ng-template> |
196 | </ng-container> | 196 | </ng-container> |
197 | 197 | ||
198 | <ng-container ngbNavItem *ngIf="videoLive"> | ||
199 | <a ngbNavLink i18n>Live settings</a> | ||
200 | |||
201 | <ng-template ngbNavContent> | ||
202 | <div class="row live-settings"> | ||
203 | <div class="col-md-12"> | ||
204 | |||
205 | <div class="form-group"> | ||
206 | <label for="videoLiveRTMPUrl" i18n>Live RTMP Url</label> | ||
207 | <my-input-readonly-copy id="videoLiveRTMPUrl" [value]="videoLive.rtmpUrl"></my-input-readonly-copy> | ||
208 | </div> | ||
209 | |||
210 | <div class="form-group"> | ||
211 | <label for="videoLiveStreamKey" i18n>Live stream key</label> | ||
212 | <my-input-readonly-copy id="videoLiveStreamKey" [value]="videoLive.streamKey"></my-input-readonly-copy> | ||
213 | </div> | ||
214 | </div> | ||
215 | </div> | ||
216 | </ng-template> | ||
217 | |||
218 | </ng-container> | ||
219 | |||
220 | |||
198 | <ng-container ngbNavItem> | 221 | <ng-container ngbNavItem> |
199 | <a ngbNavLink i18n>Advanced settings</a> | 222 | <a ngbNavLink i18n>Advanced settings</a> |
200 | 223 | ||
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.component.ts b/client/src/app/+videos/+video-edit/shared/video-edit.component.ts index f04111e69..bee65184b 100644 --- a/client/src/app/+videos/+video-edit/shared/video-edit.component.ts +++ b/client/src/app/+videos/+video-edit/shared/video-edit.component.ts | |||
@@ -20,10 +20,11 @@ import { | |||
20 | import { FormReactiveValidationMessages, FormValidatorService, SelectChannelItem } from '@app/shared/shared-forms' | 20 | import { FormReactiveValidationMessages, FormValidatorService, SelectChannelItem } from '@app/shared/shared-forms' |
21 | import { InstanceService } from '@app/shared/shared-instance' | 21 | import { InstanceService } from '@app/shared/shared-instance' |
22 | import { VideoCaptionEdit, VideoEdit, VideoService } from '@app/shared/shared-main' | 22 | import { VideoCaptionEdit, VideoEdit, VideoService } from '@app/shared/shared-main' |
23 | import { ServerConfig, VideoConstant, VideoPrivacy } from '@shared/models' | 23 | import { ServerConfig, VideoConstant, VideoLive, VideoPrivacy } from '@shared/models' |
24 | import { RegisterClientFormFieldOptions, RegisterClientVideoFieldOptions } from '@shared/models/plugins/register-client-form-field.model' | 24 | import { RegisterClientFormFieldOptions, RegisterClientVideoFieldOptions } from '@shared/models/plugins/register-client-form-field.model' |
25 | import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service' | 25 | import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service' |
26 | import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component' | 26 | import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component' |
27 | import { VideoEditType } from './video-edit.type' | ||
27 | 28 | ||
28 | type VideoLanguages = VideoConstant<string> & { group?: string } | 29 | type VideoLanguages = VideoConstant<string> & { group?: string } |
29 | 30 | ||
@@ -40,7 +41,8 @@ export class VideoEditComponent implements OnInit, OnDestroy { | |||
40 | @Input() schedulePublicationPossible = true | 41 | @Input() schedulePublicationPossible = true |
41 | @Input() videoCaptions: (VideoCaptionEdit & { captionPath?: string })[] = [] | 42 | @Input() videoCaptions: (VideoCaptionEdit & { captionPath?: string })[] = [] |
42 | @Input() waitTranscodingEnabled = true | 43 | @Input() waitTranscodingEnabled = true |
43 | @Input() type: 'import-url' | 'import-torrent' | 'upload' | 'update' | 44 | @Input() type: VideoEditType |
45 | @Input() videoLive: VideoLive | ||
44 | 46 | ||
45 | @ViewChild('videoCaptionAddModal', { static: true }) videoCaptionAddModal: VideoCaptionAddModalComponent | 47 | @ViewChild('videoCaptionAddModal', { static: true }) videoCaptionAddModal: VideoCaptionAddModalComponent |
46 | 48 | ||
@@ -124,7 +126,8 @@ export class VideoEditComponent implements OnInit, OnDestroy { | |||
124 | previewfile: null, | 126 | previewfile: null, |
125 | support: VIDEO_SUPPORT_VALIDATOR, | 127 | support: VIDEO_SUPPORT_VALIDATOR, |
126 | schedulePublicationAt: VIDEO_SCHEDULE_PUBLICATION_AT_VALIDATOR, | 128 | schedulePublicationAt: VIDEO_SCHEDULE_PUBLICATION_AT_VALIDATOR, |
127 | originallyPublishedAt: VIDEO_ORIGINALLY_PUBLISHED_AT_VALIDATOR | 129 | originallyPublishedAt: VIDEO_ORIGINALLY_PUBLISHED_AT_VALIDATOR, |
130 | liveStreamKey: null | ||
128 | } | 131 | } |
129 | 132 | ||
130 | this.formValidatorService.updateForm( | 133 | this.formValidatorService.updateForm( |
@@ -320,7 +323,12 @@ export class VideoEditComponent implements OnInit, OnDestroy { | |||
320 | const currentSupport = this.form.value[ 'support' ] | 323 | const currentSupport = this.form.value[ 'support' ] |
321 | 324 | ||
322 | // First time we set the channel? | 325 | // First time we set the channel? |
323 | if (isNaN(oldChannelId) && !currentSupport) return this.updateSupportField(newChannel.support) | 326 | if (isNaN(oldChannelId)) { |
327 | // Fill support if it's empty | ||
328 | if (!currentSupport) this.updateSupportField(newChannel.support) | ||
329 | |||
330 | return | ||
331 | } | ||
324 | 332 | ||
325 | const oldChannel = this.userVideoChannels.find(c => c.id === oldChannelId) | 333 | const oldChannel = this.userVideoChannels.find(c => c.id === oldChannelId) |
326 | if (!newChannel || !oldChannel) { | 334 | if (!newChannel || !oldChannel) { |
diff --git a/client/src/app/+videos/+video-edit/shared/video-edit.type.ts b/client/src/app/+videos/+video-edit/shared/video-edit.type.ts new file mode 100644 index 000000000..fdbe9505c --- /dev/null +++ b/client/src/app/+videos/+video-edit/shared/video-edit.type.ts | |||
@@ -0,0 +1 @@ | |||
export type VideoEditType = 'update' | 'upload' | 'import-url' | 'import-torrent' | 'go-live' | |||