X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2F%2Bvideos%2F%2Bvideo-edit%2Fvideo-add-components%2Fvideo-go-live.component.ts;h=8e035b6bbba9c1141b4a57c7f6b8fbe2631a0540;hb=218f730c7bceda5511d46f26191e7b1726c9ffd3;hp=0a9efc693818acecd6ad1b808b3d51cbed220452;hpb=a5cf76afa378aae81af2a9b0ce548e5d2582f832;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts index 0a9efc693..8e035b6bb 100644 --- a/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts +++ b/client/src/app/+videos/+video-edit/video-add-components/video-go-live.component.ts @@ -1,12 +1,14 @@ -import { Component, EventEmitter, OnInit, Output } from '@angular/core' +import { forkJoin } from 'rxjs' +import { AfterViewChecked, AfterViewInit, Component, EventEmitter, OnInit, Output } from '@angular/core' import { Router } from '@angular/router' -import { AuthService, CanComponentDeactivate, Notifier, ServerService } from '@app/core' +import { AuthService, CanComponentDeactivate, HooksService, Notifier, ServerService } from '@app/core' import { scrollToTop } from '@app/helpers' import { FormValidatorService } from '@app/shared/shared-forms' -import { LiveVideoService, VideoCaptionService, VideoEdit, VideoService } from '@app/shared/shared-main' +import { VideoCaptionService, VideoEdit, VideoService } from '@app/shared/shared-main' +import { LiveVideoService } from '@app/shared/shared-video-live' import { LoadingBarService } from '@ngx-loading-bar/core' -import { LiveVideo, VideoCreate, VideoPrivacy } from '@shared/models' +import { LiveVideo, LiveVideoCreate, LiveVideoUpdate, ServerErrorCode, VideoPrivacy } from '@shared/models' import { VideoSend } from './video-send' @Component({ @@ -17,7 +19,7 @@ import { VideoSend } from './video-send' './video-send.scss' ] }) -export class VideoGoLiveComponent extends VideoSend implements OnInit, CanComponentDeactivate { +export class VideoGoLiveComponent extends VideoSend implements OnInit, AfterViewInit, CanComponentDeactivate { @Output() firstStepDone = new EventEmitter() @Output() firstStepError = new EventEmitter() @@ -39,7 +41,8 @@ export class VideoGoLiveComponent extends VideoSend implements OnInit, CanCompon protected videoService: VideoService, protected videoCaptionService: VideoCaptionService, private liveVideoService: LiveVideoService, - private router: Router + private router: Router, + private hooks: HooksService ) { super() } @@ -48,13 +51,19 @@ export class VideoGoLiveComponent extends VideoSend implements OnInit, CanCompon super.ngOnInit() } + ngAfterViewInit () { + this.hooks.runAction('action:go-live.init', 'video-edit') + } + canDeactivate () { return { canDeactivate: true } } goLive () { - const video: VideoCreate = { - name: 'Live', + const name = 'Live' + + const video: LiveVideoCreate = { + name, privacy: VideoPrivacy.PRIVATE, nsfw: this.serverConfig.instance.isNSFW, waitTranscoding: true, @@ -63,8 +72,6 @@ export class VideoGoLiveComponent extends VideoSend implements OnInit, CanCompon channelId: this.firstStepChannelId } - this.firstStepDone.emit(name) - // Go live in private mode, but correctly fill the update form with the first user choice const toPatch = Object.assign({}, video, { privacy: this.firstStepPrivacyId }) this.form.patchValue(toPatch) @@ -75,12 +82,23 @@ export class VideoGoLiveComponent extends VideoSend implements OnInit, CanCompon this.videoUUID = res.video.uuid this.isInUpdateForm = true + this.firstStepDone.emit(name) + this.fetchVideoLive() }, err => { this.firstStepError.emit() - this.notifier.error(err.message) + + let message = err.message + + if (err.body?.code === ServerErrorCode.MAX_INSTANCE_LIVES_LIMIT_REACHED) { + message = $localize`Cannot create live because this instance have too many created lives` + } else if (err.body?.code) { + message = $localize`Cannot create live because you created too many lives` + } + + this.notifier.error(message) } ) } @@ -95,22 +113,37 @@ export class VideoGoLiveComponent extends VideoSend implements OnInit, CanCompon video.id = this.videoId video.uuid = this.videoUUID + const liveVideoUpdate: LiveVideoUpdate = { + saveReplay: this.form.value.saveReplay, + permanentLive: this.form.value.permanentLive + } + // Update the video - this.updateVideoAndCaptions(video) - .subscribe( - () => { - this.notifier.success($localize`Live published.`) + forkJoin([ + this.updateVideoAndCaptions(video), + + this.liveVideoService.updateLive(this.videoId, liveVideoUpdate) + ]).subscribe( + () => { + this.notifier.success($localize`Live published.`) - this.router.navigate([ '/videos/watch', video.uuid ]) - }, + this.router.navigate(['/videos/watch', video.uuid]) + }, - err => { - this.error = err.message - scrollToTop() - console.error(err) - } - ) + err => { + this.error = err.message + scrollToTop() + console.error(err) + } + ) + } + + getMaxLiveDuration () { + return this.serverConfig.live.maxDuration / 1000 + } + isWaitTranscodingEnabled () { + return this.form.value['saveReplay'] === true } private fetchVideoLive () {