import { Component, OnInit } from '@angular/core'
import { ConfigService } from '@app/+admin/config/shared/config.service'
-import { ConfirmService } from '@app/core'
import { ServerService } from '@app/core/server/server.service'
import { CustomConfigValidatorsService, FormReactive, UserValidatorsService } from '@app/shared'
-import { NotificationsService } from 'angular2-notifications'
+import { Notifier } from '@app/core'
import { CustomConfig } from '../../../../../../shared/models/server/custom-config.model'
import { I18n } from '@ngx-translate/i18n-polyfill'
import { BuildFormDefaultValues, FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service'
protected formValidatorService: FormValidatorService,
private customConfigValidatorsService: CustomConfigValidatorsService,
private userValidatorsService: UserValidatorsService,
- private notificationsService: NotificationsService,
+ private notifier: Notifier,
private configService: ConfigService,
private serverService: ServerService,
- private confirmService: ConfirmService,
private i18n: I18n
) {
super()
}
ngOnInit () {
- const formGroupData = {
+ const formGroupData: { [key: string]: any } = {
instanceName: this.customConfigValidatorsService.INSTANCE_NAME,
instanceShortDescription: this.customConfigValidatorsService.INSTANCE_SHORT_DESCRIPTION,
instanceDescription: null,
userVideoQuota: this.userValidatorsService.USER_VIDEO_QUOTA,
userVideoQuotaDaily: this.userValidatorsService.USER_VIDEO_QUOTA_DAILY,
transcodingThreads: this.customConfigValidatorsService.TRANSCODING_THREADS,
+ transcodingAllowAdditionalExtensions: null,
transcodingEnabled: null,
customizationJavascript: null,
customizationCSS: null
this.forceCheck()
},
- err => this.notificationsService.error(this.i18n('Error'), err.message)
+ err => this.notifier.error(err.message)
)
}
}
async formValidated () {
- const newCustomizationJavascript = this.form.value['customizationJavascript']
- const newCustomizationCSS = this.form.value['customizationCSS']
-
- const customizations = []
- if (newCustomizationJavascript && newCustomizationJavascript !== this.oldCustomJavascript) customizations.push('JavaScript')
- if (newCustomizationCSS && newCustomizationCSS !== this.oldCustomCSS) customizations.push('CSS')
-
- if (customizations.length !== 0) {
- const customizationsText = customizations.join('/')
-
- // FIXME: i18n service does not support string concatenation
- const message = this.i18n('You set custom {{customizationsText}}. ', { customizationsText }) +
- this.i18n('This could lead to security issues or bugs if you do not understand it. ') +
- this.i18n('Are you sure you want to update the configuration?')
-
- const label = this.i18n('Please type') + ` "I understand the ${customizationsText} I set" ` + this.i18n('to confirm.')
- const expectedInputValue = `I understand the ${customizationsText} I set`
-
- const confirmRes = await this.confirmService.confirmWithInput(message, label, expectedInputValue)
- if (confirmRes === false) return
- }
-
const data: CustomConfig = {
instance: {
name: this.form.value['instanceName'],
},
transcoding: {
enabled: this.form.value['transcodingEnabled'],
+ allowAdditionalExtensions: this.form.value['transcodingAllowAdditionalExtensions'],
threads: this.form.value['transcodingThreads'],
resolutions: {
'240p': this.form.value[this.getResolutionKey('240p')],
this.updateForm()
- this.notificationsService.success(this.i18n('Success'), this.i18n('Configuration updated.'))
+ this.notifier.success(this.i18n('Configuration updated.'))
},
- err => this.notificationsService.error(this.i18n('Error'), err.message)
+ err => this.notifier.error(err.message)
)
}
private updateForm () {
- const data = {
+ const data: { [key: string]: any } = {
instanceName: this.customConfig.instance.name,
instanceShortDescription: this.customConfig.instance.shortDescription,
instanceDescription: this.customConfig.instance.description,
userVideoQuotaDaily: this.customConfig.user.videoQuotaDaily,
transcodingThreads: this.customConfig.transcoding.threads,
transcodingEnabled: this.customConfig.transcoding.enabled,
+ transcodingAllowAdditionalExtensions: this.customConfig.transcoding.allowAdditionalExtensions,
customizationJavascript: this.customConfig.instance.customizations.javascript,
customizationCSS: this.customConfig.instance.customizations.css,
importVideosHttpEnabled: this.customConfig.import.videos.http.enabled,