X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2F%2Bvideo-edit%2Fvideo-update.component.ts;h=774772e148085c6fe5521e6145eef041ff1b067b;hb=308c427551c3e20cd9172be58636d8c178f5ae70;hp=4fe65bccd83cee34acbeed2e85256b8450afa0f5;hpb=ef4c78da4f0da61aebfa42f6e8420bf431a68bc8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/videos/+video-edit/video-update.component.ts b/client/src/app/videos/+video-edit/video-update.component.ts index 4fe65bccd..774772e14 100644 --- a/client/src/app/videos/+video-edit/video-update.component.ts +++ b/client/src/app/videos/+video-edit/video-update.component.ts @@ -49,55 +49,31 @@ export class VideoUpdateComponent extends FormReactive implements OnInit { this.buildForm({}) this.serverService.videoPrivaciesLoaded - .subscribe(() => this.videoPrivacies = this.serverService.getVideoPrivacies()) + .subscribe(() => this.videoPrivacies = this.serverService.getVideoPrivacies()) + + this.route.data + .pipe(map(data => data.videoData)) + .subscribe(({ video, videoChannels, videoCaptions }) => { + this.video = new VideoEdit(video) + this.userVideoChannels = videoChannels + this.videoCaptions = videoCaptions + + // We cannot set private a video that was not private + if (this.video.privacy !== VideoPrivacy.PRIVATE) { + this.videoPrivacies = this.videoPrivacies.filter(p => p.id.toString() !== VideoPrivacy.PRIVATE.toString()) + } else { // We can schedule video publication only if it it is private + this.schedulePublicationPossible = this.video.privacy === VideoPrivacy.PRIVATE + } - const uuid: string = this.route.snapshot.params[ 'uuid' ] - this.videoService.getVideo(uuid) - .pipe( - switchMap(video => { - return this.videoService - .loadCompleteDescription(video.descriptionPath) - .pipe(map(description => Object.assign(video, { description }))) - }), - switchMap(video => { - return this.videoChannelService - .listAccountVideoChannels(video.account) - .pipe( - map(result => result.data), - map(videoChannels => videoChannels.map(c => ({ id: c.id, label: c.displayName, support: c.support }))), - map(videoChannels => ({ video, videoChannels })) - ) - }), - switchMap(({ video, videoChannels }) => { - return this.videoCaptionService - .listCaptions(video.id) - .pipe( - map(result => result.data), - map(videoCaptions => ({ video, videoChannels, videoCaptions })) - ) - }) - ) - .subscribe( - ({ video, videoChannels, videoCaptions }) => { - this.video = new VideoEdit(video) - this.userVideoChannels = videoChannels - this.videoCaptions = videoCaptions - - // We cannot set private a video that was not private - if (this.video.privacy !== VideoPrivacy.PRIVATE) { - this.videoPrivacies = this.videoPrivacies.filter(p => p.id.toString() !== VideoPrivacy.PRIVATE.toString()) - } else { // We can schedule video publication only if it it is private - this.schedulePublicationPossible = this.video.privacy === VideoPrivacy.PRIVATE - } - - this.hydrateFormFromVideo() - }, + // FIXME: Angular does not detec + setTimeout(() => this.hydrateFormFromVideo()) + }, - err => { - console.error(err) - this.notificationsService.error(this.i18n('Error'), err.message) - } - ) + err => { + console.error(err) + this.notificationsService.error(this.i18n('Error'), err.message) + } + ) } checkForm () {