X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2F%2Bvideo-edit%2Fshared%2Fvideo-edit.component.ts;h=b09664376f1afba9bd94e19b0a07ade16e4bcbcd;hb=4ffdcfc63b8c804a0aea20609544c859ab57318b;hp=00c7bc41dd0cf058b53d4350156251f9e0e5ff58;hpb=0f7fedc39857ebc0eb29182c1588a92b9adfb75a;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 00c7bc41d..b09664376 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 @@ -12,7 +12,7 @@ import { VideoCaptionService } from '@app/shared/video-caption' import { VideoCaptionAddModalComponent } from '@app/videos/+video-edit/shared/video-caption-add-modal.component' import { VideoCaptionEdit } from '@app/shared/video-caption/video-caption-edit.model' import { removeElementFromArray } from '@app/shared/misc/utils' -import { VideoConstant } from '../../../../../../shared' +import { VideoConstant, VideoPrivacy } from '../../../../../../shared' @Component({ selector: 'my-video-edit', @@ -23,7 +23,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { @Input() form: FormGroup @Input() formErrors: { [ id: string ]: string } = {} @Input() validationMessages: FormReactiveValidationMessages = {} - @Input() videoPrivacies: { id: number, label: string }[] = [] + @Input() videoPrivacies: VideoConstant[] = [] @Input() userVideoChannels: { id: number, label: string, support: string }[] = [] @Input() schedulePublicationPossible = true @Input() videoCaptions: VideoCaptionEdit[] = [] @@ -33,8 +33,8 @@ export class VideoEditComponent implements OnInit, OnDestroy { // So that it can be accessed in the template readonly SPECIAL_SCHEDULED_PRIVACY = VideoEdit.SPECIAL_SCHEDULED_PRIVACY - videoCategories: VideoConstant[] = [] - videoLicences: VideoConstant[] = [] + videoCategories: VideoConstant[] = [] + videoLicences: VideoConstant[] = [] videoLanguages: VideoConstant[] = [] tagValidators: ValidatorFn[] @@ -50,6 +50,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { private schedulerInterval private firstPatchDone = false + private initialVideoCaptions: string[] = [] constructor ( private formValidatorService: FormValidatorService, @@ -79,6 +80,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { const defaultValues = { nsfw: 'false', commentsEnabled: 'true', + downloadingEnabled: 'true', waitTranscoding: 'true', tags: [] } @@ -88,6 +90,7 @@ export class VideoEditComponent implements OnInit, OnDestroy { channelId: this.videoValidatorsService.VIDEO_CHANNEL, nsfw: null, commentsEnabled: null, + downloadingEnabled: null, waitTranscoding: null, category: this.videoValidatorsService.VIDEO_CATEGORY, licence: this.videoValidatorsService.VIDEO_LICENCE, @@ -127,6 +130,8 @@ export class VideoEditComponent implements OnInit, OnDestroy { this.videoLanguages = this.serverService.getVideoLanguages() this.schedulerInterval = setInterval(() => this.minScheduledDate = new Date(), 1000 * 60) // Update every minute + + this.initialVideoCaptions = this.videoCaptions.map(c => c.language.id) } ngOnDestroy () { @@ -139,15 +144,22 @@ export class VideoEditComponent implements OnInit, OnDestroy { // Replace existing caption? if (existingCaption) { Object.assign(existingCaption, caption, { action: 'CREATE' as 'CREATE' }) - return + } else { + this.videoCaptions.push( + Object.assign(caption, { action: 'CREATE' as 'CREATE' }) + ) } - this.videoCaptions.push( - Object.assign(caption, { action: 'CREATE' as 'CREATE' }) - ) + this.sortVideoCaptions() } - deleteCaption (caption: VideoCaptionEdit) { + async deleteCaption (caption: VideoCaptionEdit) { + // Caption recovers his former state + if (caption.action && this.initialVideoCaptions.indexOf(caption.language.id) !== -1) { + caption.action = undefined + return + } + // This caption is not on the server, just remove it from our array if (caption.action === 'CREATE') { removeElementFromArray(this.videoCaptions, caption) @@ -161,6 +173,15 @@ export class VideoEditComponent implements OnInit, OnDestroy { this.videoCaptionAddModal.show() } + private sortVideoCaptions () { + this.videoCaptions.sort((v1, v2) => { + if (v1.language.label < v2.language.label) return -1 + if (v1.language.label === v2.language.label) return 0 + + return 1 + }) + } + private trackPrivacyChange () { // We will update the "support" field depending on the channel this.form.controls[ 'privacy' ]