import { Component, HostListener, OnInit } from '@angular/core'
import { ActivatedRoute, Router } from '@angular/router'
import { Notifier } from '@app/core'
-import { FormReactive, FormValidatorService } from '@app/shared/shared-forms'
+import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
import { Video, 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 { logger } from '@root-helpers/logger'
+import { pick, simpleObjectsDeepEqual } from '@shared/core-utils'
import { LiveVideo, LiveVideoUpdate, VideoPrivacy } from '@shared/models'
import { VideoSource } from '@shared/models/videos/video-source'
import { hydrateFormFromVideo } from './shared/video-edit-utils'
isUpdatingVideo = false
forbidScheduledPublication = false
- waitTranscodingEnabled = true
private updateDone = false
constructor (
- protected formValidatorService: FormValidatorService,
+ protected formReactiveService: FormReactiveService,
private route: ActivatedRoute,
private router: Router,
private notifier: Notifier,
if (this.liveVideo) {
this.form.patchValue({
saveReplay: this.liveVideo.saveReplay,
+ replayPrivacy: this.liveVideo.replaySettings ? this.liveVideo.replaySettings.privacy : VideoPrivacy.PRIVATE,
latencyMode: this.liveVideo.latencyMode,
permanentLive: this.liveVideo.permanentLive
})
return { canDeactivate: this.formChanged === false, text }
}
- isWaitTranscodingEnabled () {
+ isWaitTranscodingHidden () {
if (this.videoDetails.getFiles().length > 1) { // Already transcoded
- return false
+ return true
}
- if (this.liveVideo && this.form.value['saveReplay'] !== true) {
- return false
- }
-
- return true
+ return false
}
async update () {
switchMap(() => {
if (!this.liveVideo) return of(undefined)
+ const saveReplay = !!this.form.value.saveReplay
+ const replaySettings = saveReplay
+ ? { privacy: this.form.value.replayPrivacy }
+ : undefined
+
const liveVideoUpdate: LiveVideoUpdate = {
- saveReplay: !!this.form.value.saveReplay,
+ saveReplay,
+ replaySettings,
permanentLive: !!this.form.value.permanentLive,
latencyMode: this.form.value.latencyMode
}
// Don't update live attributes if they did not change
- const liveChanged = Object.keys(liveVideoUpdate)
- .some(key => this.liveVideo[key] !== liveVideoUpdate[key])
+ const baseVideo = pick(this.liveVideo, Object.keys(liveVideoUpdate) as (keyof LiveVideoUpdate)[])
+ const liveChanged = !simpleObjectsDeepEqual(baseVideo, liveVideoUpdate)
if (!liveChanged) return of(undefined)
return this.liveVideoService.updateLive(this.videoEdit.id, liveVideoUpdate)