MAX_INSTANCE_LIVES_VALIDATOR,
MAX_LIVE_DURATION_VALIDATOR,
MAX_USER_LIVES_VALIDATOR,
+ MAX_VIDEO_CHANNELS_PER_USER_VALIDATOR,
SEARCH_INDEX_URL_VALIDATOR,
SERVICES_TWITTER_USERNAME_VALIDATOR,
SIGNUP_LIMIT_VALIDATOR,
TRANSCODING_THREADS_VALIDATOR
} from '@app/shared/form-validators/custom-config-validators'
import { USER_VIDEO_QUOTA_DAILY_VALIDATOR, USER_VIDEO_QUOTA_VALIDATOR } from '@app/shared/form-validators/user-validators'
-import { FormReactive, FormValidatorService } from '@app/shared/shared-forms'
+import { FormReactive, FormReactiveService } from '@app/shared/shared-forms'
import { CustomPageService } from '@app/shared/shared-main/custom-page'
import { CustomConfig, CustomPage, HTMLServerConfig } from '@shared/models'
import { EditConfigurationService } from './edit-configuration.service'
categoryItems: SelectOptionsItem[] = []
constructor (
+ protected formReactiveService: FormReactiveService,
private router: Router,
private route: ActivatedRoute,
- protected formValidatorService: FormValidatorService,
private notifier: Notifier,
private configService: ConfigService,
private customPage: CustomPageService,
whitelisted: null
}
},
+ client: {
+ videos: {
+ miniature: {
+ preferAuthorDisplayName: null
+ }
+ },
+ menu: {
+ login: {
+ redirectOnSingleExternalAuth: null
+ }
+ }
+ },
cache: {
previews: {
size: CACHE_PREVIEWS_SIZE_VALIDATOR
signup: {
enabled: null,
limit: SIGNUP_LIMIT_VALIDATOR,
+ requiresApproval: null,
requiresEmailVerification: null,
minimumAge: SIGNUP_MINIMUM_AGE_VALIDATOR
},
torrent: {
enabled: null
}
+ },
+ videoChannelSynchronization: {
+ enabled: null
}
},
trending: {
enabled: null
},
user: {
+ history: {
+ videos: {
+ enabled: null
+ }
+ },
videoQuota: USER_VIDEO_QUOTA_VALIDATOR,
videoQuotaDaily: USER_VIDEO_QUOTA_DAILY_VALIDATOR
},
+ videoChannels: {
+ maxPerUser: MAX_VIDEO_CHANNELS_PER_USER_VALIDATOR
+ },
transcoding: {
enabled: null,
threads: TRANSCODING_THREADS_VALIDATOR,
profile: null,
concurrency: CONCURRENCY_VALIDATOR,
resolutions: {},
+ alwaysTranscodeOriginalResolution: null,
hls: {
enabled: null
},
webtorrent: {
enabled: null
+ },
+ remoteRunners: {
+ enabled: null
}
},
live: {
maxInstanceLives: MAX_INSTANCE_LIVES_VALIDATOR,
maxUserLives: MAX_USER_LIVES_VALIDATOR,
allowReplay: null,
+ latencySetting: {
+ enabled: null
+ },
transcoding: {
enabled: null,
threads: TRANSCODING_THREADS_VALIDATOR,
profile: null,
- resolutions: {}
+ resolutions: {},
+ alwaysTranscodeOriginalResolution: null,
+ remoteRunners: {
+ enabled: null
+ }
+ }
+ },
+ videoStudio: {
+ enabled: null,
+ remoteRunners: {
+ enabled: null
}
},
autoBlacklist: {
const defaultValues = {
transcoding: {
- resolutions: {}
+ resolutions: {} as { [id: string]: string }
},
live: {
transcoding: {
- resolutions: {}
+ resolutions: {} as { [id: string]: string }
}
}
}
this.loadConfigAndUpdateForm()
this.loadCategoriesAndLanguages()
- if (!this.serverConfig.allowEdits) {
+
+ if (!this.isUpdateAllowed()) {
this.form.disable()
}
}
formValidated () {
+ this.forceCheck()
+ if (!this.form.valid) return
+
const value: ComponentCustomConfig = this.form.getRawValue()
forkJoin([
})
}
+ isUpdateAllowed () {
+ return this.serverConfig.webadmin.configuration.edition.allowed === true
+ }
+
hasConsistentOptions () {
if (this.hasLiveAllowReplayConsistentOptions()) return true
this.customConfig = { ...config, instanceCustomHomepage: homepage }
this.updateForm()
- // Force form validation
- this.forceCheck()
+ this.markAllAsDirty()
},
error: err => this.notifier.error(err.message)