+import { of } from 'rxjs'
import { map, switchMap } from 'rxjs/operators'
import { Component, HostListener, OnInit } from '@angular/core'
import { ActivatedRoute, Router } from '@angular/router'
import { Notifier } from '@app/core'
import { FormReactive, FormValidatorService, SelectChannelItem } from '@app/shared/shared-forms'
import { VideoCaptionEdit, VideoCaptionService, VideoDetails, VideoEdit, VideoService } from '@app/shared/shared-main'
+import { LiveVideoService } from '@app/shared/shared-video-live'
import { LoadingBarService } from '@ngx-loading-bar/core'
-import { LiveVideo, VideoPrivacy } from '@shared/models'
+import { LiveVideo, LiveVideoUpdate, VideoPrivacy } from '@shared/models'
import { hydrateFormFromVideo } from './shared/video-edit-utils'
@Component({
private notifier: Notifier,
private videoService: VideoService,
private loadingBar: LoadingBarService,
- private videoCaptionService: VideoCaptionService
+ private videoCaptionService: VideoCaptionService,
+ private liveVideoService: LiveVideoService
) {
super()
}
}
// FIXME: Angular does not detect the change inside this subscription, so use the patched setTimeout
- setTimeout(() => hydrateFormFromVideo(this.form, this.video, true))
+ setTimeout(() => {
+ hydrateFormFromVideo(this.form, this.video, true)
+
+ if (this.liveVideo) {
+ this.form.patchValue({
+ saveReplay: this.liveVideo.saveReplay
+ })
+ }
+ })
},
err => {
this.video.patch(this.form.value)
+ const liveVideoUpdate: LiveVideoUpdate = {
+ saveReplay: this.form.value.saveReplay
+ }
+
this.loadingBar.useRef().start()
this.isUpdatingVideo = true
this.videoService.updateVideo(this.video)
.pipe(
// Then update captions
- switchMap(() => this.videoCaptionService.updateCaptions(this.video.id, this.videoCaptions))
+ switchMap(() => this.videoCaptionService.updateCaptions(this.video.id, this.videoCaptions)),
+
+ switchMap(() => {
+ if (!this.liveVideo) return of(undefined)
+
+ return this.liveVideoService.updateLive(this.video.id, liveVideoUpdate)
+ })
)
.subscribe(
() => {