Fix wait transcoding checkbox display

This commit is contained in:
Chocobozzz 2021-01-26 10:56:55 +01:00
parent e08ff02a9f
commit ddb62a85c5
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
8 changed files with 30 additions and 32 deletions

View File

@ -136,7 +136,7 @@
</ng-template>
</my-peertube-checkbox>
<my-peertube-checkbox *ngIf="isWaitTranscodingDisplayed()" inputName="waitTranscoding" formControlName="waitTranscoding" helpPlacement="bottom-right">
<my-peertube-checkbox *ngIf="waitTranscodingEnabled" inputName="waitTranscoding" formControlName="waitTranscoding" helpPlacement="bottom-right">
<ng-template ptTemplate="label">
<ng-container i18n>Publish after transcoding</ng-container>
</ng-template>
@ -347,5 +347,5 @@
</div>
<my-video-caption-add-modal
#videoCaptionAddModal [existingCaptions]="existingCaptions" [serverConfig]="serverConfig" (captionAdded)="onCaptionAdded($event)"
#videoCaptionAddModal [existingCaptions]="getExistingCaptions()" [serverConfig]="serverConfig" (captionAdded)="onCaptionAdded($event)"
></my-video-caption-add-modal>

View File

@ -96,22 +96,6 @@ export class VideoEditComponent implements OnInit, OnDestroy {
this.calendarDateFormat = this.i18nPrimengCalendarService.getDateFormat()
}
get existingCaptions () {
return this.videoCaptions
.filter(c => c.action !== 'REMOVE')
.map(c => c.language.id)
}
isWaitTranscodingDisplayed () {
if (!this.waitTranscodingEnabled) return false
if (this.liveVideo) {
return this.form.value['saveReplay'] === true
}
return true
}
updateForm () {
const defaultValues: any = {
nsfw: 'false',
@ -217,6 +201,12 @@ export class VideoEditComponent implements OnInit, OnDestroy {
if (this.schedulerInterval) clearInterval(this.schedulerInterval)
}
getExistingCaptions () {
return this.videoCaptions
.filter(c => c.action !== 'REMOVE')
.map(c => c.language.id)
}
onCaptionAdded (caption: VideoCaptionEdit) {
const existingCaption = this.videoCaptions.find(c => c.language.id === caption.language.id)

View File

@ -36,7 +36,7 @@
<form [hidden]="!isInUpdateForm" novalidate [formGroup]="form">
<my-video-edit
[form]="form" [formErrors]="formErrors" [videoCaptions]="videoCaptions"
[schedulePublicationPossible]="false" [waitTranscodingEnabled]="false"
[schedulePublicationPossible]="false" [waitTranscodingEnabled]="isWaitTranscodingEnabled()"
[validationMessages]="validationMessages" [userVideoChannels]="userVideoChannels" [liveVideo]="liveVideo"
type="go-live"
></my-video-edit>

View File

@ -137,6 +137,10 @@ export class VideoGoLiveComponent extends VideoSend implements OnInit, CanCompon
return this.serverConfig.live.maxDuration / 1000
}
isWaitTranscodingEnabled () {
return this.form.value['saveReplay'] === true
}
private fetchVideoLive () {
this.liveVideoService.getVideoLive(this.videoId)
.subscribe(

View File

@ -84,7 +84,7 @@
<my-video-edit
[form]="form" [formErrors]="formErrors" [videoCaptions]="videoCaptions"
[validationMessages]="validationMessages" [userVideoChannels]="userVideoChannels"
[waitTranscodingEnabled]="waitTranscodingEnabled"
[waitTranscodingEnabled]="true"
type="upload"
></my-video-edit>

View File

@ -44,7 +44,6 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy
}
formData: FormData
waitTranscodingEnabled = true
previewfileUpload: File
error: string
@ -163,11 +162,6 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy
if (nameWithoutExtension.length < 3) name = videofile.name
else name = nameWithoutExtension
// Force user to wait transcoding for unsupported video types in web browsers
if (!videofile.name.endsWith('.mp4') && !videofile.name.endsWith('.webm') && !videofile.name.endsWith('.ogv')) {
this.waitTranscodingEnabled = false
}
const nsfw = this.serverConfig.instance.isNSFW
const waitTranscoding = true
const commentsEnabled = true

View File

@ -9,7 +9,7 @@
<my-video-edit
[form]="form" [formErrors]="formErrors" [schedulePublicationPossible]="schedulePublicationPossible"
[validationMessages]="validationMessages" [userVideoChannels]="userVideoChannels"
[videoCaptions]="videoCaptions" [waitTranscodingEnabled]="waitTranscodingEnabled"
[videoCaptions]="videoCaptions" [waitTranscodingEnabled]="isWaitTranscodingEnabled()"
type="update" (pluginFieldsAdded)="hydratePluginFieldsFromVideo()"
[liveVideo]="liveVideo"
></my-video-edit>

View File

@ -17,6 +17,7 @@ import { hydrateFormFromVideo } from './shared/video-edit-utils'
})
export class VideoUpdateComponent extends FormReactive implements OnInit {
video: VideoEdit
videoDetails: VideoDetails
userVideoChannels: SelectChannelItem[] = []
videoCaptions: VideoCaptionEdit[] = []
liveVideo: LiveVideo
@ -47,17 +48,14 @@ export class VideoUpdateComponent extends FormReactive implements OnInit {
.pipe(map(data => data.videoData))
.subscribe(({ video, videoChannels, videoCaptions, liveVideo }) => {
this.video = new VideoEdit(video)
this.videoDetails = video
this.userVideoChannels = videoChannels
this.videoCaptions = videoCaptions
this.liveVideo = liveVideo
this.schedulePublicationPossible = this.video.privacy === VideoPrivacy.PRIVATE
const videoFiles = (video as VideoDetails).getFiles()
if (videoFiles.length > 1) { // Already transcoded
this.waitTranscodingEnabled = false
}
// FIXME: Angular does not detect the change inside this subscription, so use the patched setTimeout
setTimeout(() => {
hydrateFormFromVideo(this.form, this.video, true)
@ -106,6 +104,18 @@ export class VideoUpdateComponent extends FormReactive implements OnInit {
return this.form.valid
}
isWaitTranscodingEnabled () {
if (this.videoDetails.getFiles().length > 1) { // Already transcoded
return false
}
if (this.liveVideo && this.form.value['saveReplay'] !== true) {
return false
}
return true
}
update () {
if (this.checkForm() === false
|| this.isUpdatingVideo === true) {