]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
Allow configuration to be static/readonly (#4315)
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / config / edit-custom-config / edit-custom-config.component.ts
index cb65ca6e7c708e16f3dccad799024bb562391478..04b0175a732e8fb1811cd966b100cbfe86513685 100644 (file)
@@ -27,7 +27,7 @@ import {
 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 { CustomPageService } from '@app/shared/shared-main/custom-page'
-import { CustomConfig, CustomPage, ServerConfig } from '@shared/models'
+import { CustomConfig, CustomPage, HTMLServerConfig } from '@shared/models'
 import { EditConfigurationService } from './edit-configuration.service'
 
 type ComponentCustomConfig = CustomConfig & {
@@ -43,7 +43,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
   activeNav: string
 
   customConfig: ComponentCustomConfig
-  serverConfig: ServerConfig
+  serverConfig: HTMLServerConfig
 
   homepage: CustomPage
 
@@ -64,9 +64,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
   }
 
   ngOnInit () {
-    this.serverConfig = this.serverService.getTmpConfig()
-    this.serverService.getConfig()
-        .subscribe(config => this.serverConfig = config)
+    this.serverConfig = this.serverService.getHTMLConfig()
 
     const formGroupData: { [key in keyof ComponentCustomConfig ]: any } = {
       instance: {
@@ -260,17 +258,20 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
 
     this.loadConfigAndUpdateForm()
     this.loadCategoriesAndLanguages()
+    if (!this.serverConfig.allowEdits) {
+      this.form.disable()
+    }
   }
 
-  async formValidated () {
+  formValidated () {
     const value: ComponentCustomConfig = this.form.getRawValue()
 
     forkJoin([
       this.configService.updateCustomConfig(omit(value, 'instanceCustomHomepage')),
       this.customPage.updateInstanceHomepage(value.instanceCustomHomepage.content)
     ])
-      .subscribe(
-        ([ resConfig ]) => {
+      .subscribe({
+        next: ([ resConfig ]) => {
           const instanceCustomHomepage = {
             content: value.instanceCustomHomepage.content
           }
@@ -279,15 +280,17 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
 
           // Reload general configuration
           this.serverService.resetConfig()
-            .subscribe(config => this.serverConfig = config)
+            .subscribe(config => {
+              this.serverConfig = config
+            })
 
           this.updateForm()
 
           this.notifier.success($localize`Configuration updated.`)
         },
 
-        err => this.notifier.error(err.message)
-      )
+        error: err => this.notifier.error(err.message)
+      })
   }
 
   hasConsistentOptions () {
@@ -341,8 +344,8 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
     forkJoin([
       this.configService.getCustomConfig(),
       this.customPage.getInstanceHomepage()
-    ])
-      .subscribe(([ config, homepage ]) => {
+    ]).subscribe({
+      next: ([ config, homepage ]) => {
         this.customConfig = { ...config, instanceCustomHomepage: homepage }
 
         this.updateForm()
@@ -350,21 +353,21 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
         this.forceCheck()
       },
 
-      err => this.notifier.error(err.message)
-    )
+      error: err => this.notifier.error(err.message)
+    })
   }
 
   private loadCategoriesAndLanguages () {
     forkJoin([
       this.serverService.getVideoLanguages(),
       this.serverService.getVideoCategories()
-    ]).subscribe(
-      ([ languages, categories ]) => {
+    ]).subscribe({
+      next: ([ languages, categories ]) => {
         this.languageItems = languages.map(l => ({ label: l.label, id: l.id }))
         this.categoryItems = categories.map(l => ({ label: l.label, id: l.id + '' }))
       },
 
-      err => this.notifier.error(err.message)
-    )
+      error: err => this.notifier.error(err.message)
+    })
   }
 }