X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Bvideos%2F%2Bvideo-edit%2Fshared%2Fvideo-edit.component.ts;h=3d916dbce933441c521d707502eac9d3e3f3228c;hb=35f676e5d3e5e242e84ed63da2cc78117079c7cb;hp=f51f521606ef3c1a8b33d88df98b648ebcbcb118;hpb=21e493d4d8acb7a650eff3a30cd7e086b3cb8a28;p=github%2FChocobozzz%2FPeerTube.git 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 f51f52160..3d916dbce 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 @@ -2,7 +2,7 @@ import { forkJoin } from 'rxjs' import { map } from 'rxjs/operators' import { SelectChannelItem } from 'src/types/select-options-item.model' import { Component, EventEmitter, Input, NgZone, OnDestroy, OnInit, Output, ViewChild } from '@angular/core' -import { FormArray, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms' +import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms' import { HooksService, PluginService, ServerService } from '@app/core' import { removeElementFromArray } from '@app/helpers' import { @@ -21,13 +21,24 @@ import { import { FormReactiveValidationMessages, FormValidatorService } from '@app/shared/shared-forms' import { InstanceService } from '@app/shared/shared-instance' import { VideoCaptionEdit, VideoEdit, VideoService } from '@app/shared/shared-main' -import { LiveVideo, ServerConfig, VideoConstant, VideoPrivacy } from '@shared/models' -import { RegisterClientFormFieldOptions, RegisterClientVideoFieldOptions } from '@shared/models/plugins/register-client-form-field.model' +import { + LiveVideo, + RegisterClientFormFieldOptions, + RegisterClientVideoFieldOptions, + ServerConfig, + VideoConstant, + VideoDetails, + VideoPrivacy +} from '@shared/models' import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service' import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component' import { VideoEditType } from './video-edit.type' type VideoLanguages = VideoConstant & { group?: string } +type PluginField = { + commonOptions: RegisterClientFormFieldOptions + videoFormOptions: RegisterClientVideoFieldOptions +} @Component({ selector: 'my-video-edit', @@ -38,9 +49,14 @@ export class VideoEditComponent implements OnInit, OnDestroy { @Input() form: FormGroup @Input() formErrors: { [ id: string ]: string } = {} @Input() validationMessages: FormReactiveValidationMessages = {} + + @Input() videoToUpdate: VideoDetails + @Input() userVideoChannels: SelectChannelItem[] = [] @Input() schedulePublicationPossible = true + @Input() videoCaptions: (VideoCaptionEdit & { captionPath?: string })[] = [] + @Input() waitTranscodingEnabled = true @Input() type: VideoEditType @Input() liveVideo: LiveVideo @@ -57,9 +73,6 @@ export class VideoEditComponent implements OnInit, OnDestroy { videoLicences: VideoConstant[] = [] videoLanguages: VideoLanguages[] = [] - tagValidators: ValidatorFn[] - tagValidatorsMessages: { [ name: string ]: string } - pluginDataFormGroup: FormGroup schedulePublicationEnabled = false @@ -73,10 +86,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { serverConfig: ServerConfig - pluginFields: { - commonOptions: RegisterClientFormFieldOptions - videoFormOptions: RegisterClientVideoFieldOptions - }[] = [] + pluginFields: PluginField[] = [] private schedulerInterval: any private firstPatchDone = false @@ -92,7 +102,6 @@ export class VideoEditComponent implements OnInit, OnDestroy { private ngZone: NgZone, private hooks: HooksService ) { - this.calendarLocale = this.i18nPrimengCalendarService.getCalendarLocale() this.calendarTimezone = this.i18nPrimengCalendarService.getTimezone() this.calendarDateFormat = this.i18nPrimengCalendarService.getDateFormat() } @@ -251,6 +260,16 @@ export class VideoEditComponent implements OnInit, OnDestroy { return this.form.value['permanentLive'] === true } + isPluginFieldHidden (pluginField: PluginField) { + if (typeof pluginField.commonOptions.hidden !== 'function') return false + + return pluginField.commonOptions.hidden({ + formValues: this.form.value, + videoToUpdate: this.videoToUpdate, + liveVideo: this.liveVideo + }) + } + private sortVideoCaptions () { this.videoCaptions.sort((v1, v2) => { if (v1.language.label < v2.language.label) return -1