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=ba3b7c96a1cd0700fa4b2c559dd1e194dbf97d41;hb=52c4976fcf4ee255a3af68ff9778e4f5c4f84bd4;hp=239e453ada3de5e0d1db5e32307ba87f4704643a;hpb=1942f11d5ee6926ad93dc1b79fae18325ba5de18;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 239e453ad..ba3b7c96a 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 @@ -1,14 +1,19 @@ +import { forkJoin } from 'rxjs' import { map } from 'rxjs/operators' import { Component, Input, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core' import { FormArray, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms' import { ServerService } from '@app/core' import { removeElementFromArray } from '@app/helpers' -import { FormReactiveValidationMessages, FormValidatorService, VideoValidatorsService } from '@app/shared/shared-forms' +import { FormReactiveValidationMessages, FormValidatorService, SelectChannelItem, VideoValidatorsService } from '@app/shared/shared-forms' +import { InstanceService } from '@app/shared/shared-instance' import { VideoCaptionEdit, VideoEdit, VideoService } from '@app/shared/shared-main' +import { I18n } from '@ngx-translate/i18n-polyfill' import { ServerConfig, VideoConstant, VideoPrivacy } from '@shared/models' import { I18nPrimengCalendarService } from './i18n-primeng-calendar.service' import { VideoCaptionAddModalComponent } from './video-caption-add-modal.component' +type VideoLanguages = VideoConstant & { group?: string } + @Component({ selector: 'my-video-edit', styleUrls: [ './video-edit.component.scss' ], @@ -18,7 +23,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { @Input() form: FormGroup @Input() formErrors: { [ id: string ]: string } = {} @Input() validationMessages: FormReactiveValidationMessages = {} - @Input() userVideoChannels: { id: number, label: string, support: string }[] = [] + @Input() userVideoChannels: SelectChannelItem[] = [] @Input() schedulePublicationPossible = true @Input() videoCaptions: (VideoCaptionEdit & { captionPath?: string })[] = [] @Input() waitTranscodingEnabled = true @@ -31,7 +36,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { videoPrivacies: VideoConstant[] = [] videoCategories: VideoConstant[] = [] videoLicences: VideoConstant[] = [] - videoLanguages: VideoConstant[] = [] + videoLanguages: VideoLanguages[] = [] tagValidators: ValidatorFn[] tagValidatorsMessages: { [ name: string ]: string } @@ -56,12 +61,11 @@ export class VideoEditComponent implements OnInit, OnDestroy { private videoValidatorsService: VideoValidatorsService, private videoService: VideoService, private serverService: ServerService, + private instanceService: InstanceService, private i18nPrimengCalendarService: I18nPrimengCalendarService, + private i18n: I18n, private ngZone: NgZone ) { - this.tagValidators = this.videoValidatorsService.VIDEO_TAGS.VALIDATORS - this.tagValidatorsMessages = this.videoValidatorsService.VIDEO_TAGS.MESSAGES - this.calendarLocale = this.i18nPrimengCalendarService.getCalendarLocale() this.calendarTimezone = this.i18nPrimengCalendarService.getTimezone() this.calendarDateFormat = this.i18nPrimengCalendarService.getDateFormat() @@ -93,7 +97,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { licence: this.videoValidatorsService.VIDEO_LICENCE, language: this.videoValidatorsService.VIDEO_LANGUAGE, description: this.videoValidatorsService.VIDEO_DESCRIPTION, - tags: null, + tags: this.videoValidatorsService.VIDEO_TAGS_ARRAY, previewfile: null, support: this.videoValidatorsService.VIDEO_SUPPORT, schedulePublicationAt: this.videoValidatorsService.VIDEO_SCHEDULE_PUBLICATION_AT, @@ -126,11 +130,29 @@ export class VideoEditComponent implements OnInit, OnDestroy { .subscribe(res => this.videoCategories = res) this.serverService.getVideoLicences() .subscribe(res => this.videoLicences = res) - this.serverService.getVideoLanguages() - .subscribe(res => this.videoLanguages = res) + forkJoin([ + this.instanceService.getAbout(), + this.serverService.getVideoLanguages() + ]).pipe(map(([ about, languages ]) => ({ about, languages }))) + .subscribe(res => { + this.videoLanguages = res.languages + .map(l => res.about.instance.languages.includes(l.id) + ? { ...l, group: this.i18n('Instance languages'), groupOrder: 0 } + : { ...l, group: this.i18n('All languages'), groupOrder: 1 }) + .sort((a, b) => a.groupOrder - b.groupOrder) + }) this.serverService.getVideoPrivacies() - .subscribe(privacies => this.videoPrivacies = this.videoService.explainedPrivacyLabels(privacies)) + .subscribe(privacies => { + this.videoPrivacies = this.videoService.explainedPrivacyLabels(privacies) + if (this.schedulePublicationPossible) { + this.videoPrivacies.push({ + id: this.SPECIAL_SCHEDULED_PRIVACY, + label: this.i18n('Scheduled'), + description: this.i18n('Hide the video until a specific date') + }) + } + }) this.serverConfig = this.serverService.getTmpConfig() this.serverService.getConfig()