- const formValue: VideoCreate = this.form.value
-
- const name = formValue.name
- const privacy = formValue.privacy
- const nsfw = formValue.nsfw
- const category = formValue.category
- const licence = formValue.licence
- const language = formValue.language
- const channelId = formValue.channelId
- const description = formValue.description
- const tags = formValue.tags
- const videofile = this.videofileInput.nativeElement.files[0]
+ const videofile = this.videofileInput.nativeElement.files[0] as File
+ if (!videofile) return
+
+ // Cannot upload videos > 4GB for now
+ if (videofile.size > 4 * 1024 * 1024 * 1024) {
+ this.notificationsService.error(this.i18n('Error'), this.i18n('We are sorry but PeerTube cannot handle videos > 4GB'))
+ return
+ }
+
+ const videoQuota = this.authService.getUser().videoQuota
+ if (videoQuota !== -1 && (this.userVideoQuotaUsed + videofile.size) > videoQuota) {
+ const bytePipes = new BytesPipe()
+
+ const msg = this.i18n(
+ 'Your video quota is exceeded with this video (video size: {{ videoSize }}, used: {{ videoQuotaUsed }}, quota: {{ videoQuota }})',
+ {
+ videoSize: bytePipes.transform(videofile.size, 0),
+ videoQuotaUsed: bytePipes.transform(this.userVideoQuotaUsed, 0),
+ videoQuota: bytePipes.transform(videoQuota, 0)
+ }
+ )
+ this.notificationsService.error(this.i18n('Error'), msg)
+ return
+ }
+
+ this.videoFileName = videofile.name
+
+ const nameWithoutExtension = videofile.name.replace(/\.[^/.]+$/, '')
+ let name: string
+
+ // If the name of the file is very small, keep the extension
+ if (nameWithoutExtension.length < 3) {
+ name = videofile.name
+ } else {
+ name = nameWithoutExtension
+ }
+
+ const privacy = this.firstStepPrivacyId.toString()
+ const nsfw = false
+ const waitTranscoding = true
+ const commentsEnabled = true
+ const channelId = this.firstStepChannelId.toString()