import { FormValidatorService } from '@app/shared/shared-forms'
import { VideoCaptionService, VideoEdit, VideoImportService, VideoService } from '@app/shared/shared-main'
import { LoadingBarService } from '@ngx-loading-bar/core'
-import { ServerErrorCode, VideoPrivacy, VideoUpdate } from '@shared/models'
+import { PeerTubeProblemDocument, ServerErrorCode, VideoUpdate } from '@shared/models'
import { hydrateFormFromVideo } from '../shared/video-edit-utils'
import { VideoSend } from './video-send'
video: VideoEdit
error: string
- protected readonly DEFAULT_VIDEO_PRIVACY = VideoPrivacy.PUBLIC
-
constructor (
protected formValidatorService: FormValidatorService,
protected loadingBar: LoadingBarService,
private router: Router,
private videoImportService: VideoImportService,
private hooks: HooksService
- ) {
+ ) {
super()
}
this.isImportingVideo = true
const videoUpdate: VideoUpdate = {
- privacy: VideoPrivacy.PRIVATE,
+ privacy: this.highestPrivacy,
waitTranscoding: false,
- commentsEnabled: true,
- downloadEnabled: true,
channelId: this.firstStepChannelId
}
this.loadingBar.useRef().start()
- this.videoImportService.importVideoTorrent(torrentfile || this.magnetUri, videoUpdate).subscribe(
- res => {
- this.loadingBar.useRef().complete()
- this.firstStepDone.emit(res.video.name)
- this.isImportingVideo = false
- this.hasImportedVideo = true
-
- this.video = new VideoEdit(Object.assign(res.video, {
- commentsEnabled: videoUpdate.commentsEnabled,
- downloadEnabled: videoUpdate.downloadEnabled,
- privacy: { id: this.firstStepPrivacyId },
- support: null,
- thumbnailUrl: null,
- previewUrl: null
- }))
-
- hydrateFormFromVideo(this.form, this.video, false)
- },
-
- err => {
- this.loadingBar.useRef().complete()
- this.isImportingVideo = false
- this.firstStepError.emit()
-
- let message = err.message
- if (err.body?.code === ServerErrorCode.INCORRECT_FILES_IN_TORRENT) {
- message = $localize`Torrents with only 1 file are supported.`
- }
+ this.videoImportService.importVideoTorrent(torrentfile || this.magnetUri, videoUpdate)
+ .subscribe({
+ next: res => {
+ this.loadingBar.useRef().complete()
+ this.firstStepDone.emit(res.video.name)
+ this.isImportingVideo = false
+ this.hasImportedVideo = true
+
+ this.video = new VideoEdit(Object.assign(res.video, {
+ commentsEnabled: videoUpdate.commentsEnabled,
+ downloadEnabled: videoUpdate.downloadEnabled,
+ privacy: { id: this.firstStepPrivacyId },
+ support: null,
+ thumbnailUrl: null,
+ previewUrl: null
+ }))
+
+ hydrateFormFromVideo(this.form, this.video, false)
+ },
+
+ error: err => {
+ this.loadingBar.useRef().complete()
+ this.isImportingVideo = false
+ this.firstStepError.emit()
+
+ let message = err.message
+
+ const error = err.body as PeerTubeProblemDocument
+ if (error?.code === ServerErrorCode.INCORRECT_FILES_IN_TORRENT) {
+ message = $localize`Torrents with only 1 file are supported.`
+ }
- this.notifier.error(message)
- }
- )
+ this.notifier.error(message)
+ }
+ })
}
- updateSecondStep () {
- if (this.checkForm() === false) {
- return
- }
+ async updateSecondStep () {
+ if (!await this.isFormValid()) return
this.video.patch(this.form.value)
// Update the video
this.updateVideoAndCaptions(this.video)
- .subscribe(
- () => {
+ .subscribe({
+ next: () => {
this.isUpdatingVideo = false
this.notifier.success($localize`Video to import updated.`)
this.router.navigate([ '/my-library', 'video-imports' ])
},
- err => {
+ error: err => {
this.error = err.message
scrollToTop()
console.error(err)
}
- )
+ })
}
}