]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Check admin config when loading the page
authorChocobozzz <me@florianbigard.com>
Wed, 7 Sep 2022 14:24:44 +0000 (16:24 +0200)
committerChocobozzz <me@florianbigard.com>
Thu, 8 Sep 2022 06:41:48 +0000 (08:41 +0200)
Avoid issues when an invalid config was set in the configuration file

client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
client/src/app/shared/shared-forms/form-reactive.ts

index 5cab9e9df396fea8e20bf7607567f607c58a7b17..545e3785769c71acd382ad010243dee888a278c6 100644 (file)
@@ -292,6 +292,9 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
   }
 
   formValidated () {
+    this.forceCheck()
+    if (!this.form.valid) return
+
     const value: ComponentCustomConfig = this.form.getRawValue()
 
     forkJoin([
@@ -381,8 +384,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
         this.customConfig = { ...config, instanceCustomHomepage: homepage }
 
         this.updateForm()
-        // Force form validation
-        this.forceCheck()
+        this.markAllAsDirty()
       },
 
       error: err => this.notifier.error(err.message)
index 6b3a6c7730e70a6d36200a212683d69da75ff79a..a19ffdd828e7d78c7388804cbd4d92079edb4519 100644 (file)
@@ -1,5 +1,5 @@
 
-import { FormGroup } from '@angular/forms'
+import { AbstractControl, FormGroup } from '@angular/forms'
 import { wait } from '@root-helpers/utils'
 import { BuildFormArgument, BuildFormDefaultValues } from '../form-validators/form-validator.model'
 import { FormValidatorService } from './form-validator.service'
@@ -44,6 +44,21 @@ export abstract class FormReactive {
     } while (this.form.status === 'PENDING')
   }
 
+  protected markAllAsDirty (controlsArg?: { [ key: string ]: AbstractControl }) {
+    const controls = controlsArg || this.form.controls
+
+    for (const key of Object.keys(controls)) {
+      const control = controls[key]
+
+      if (control instanceof FormGroup) {
+        this.markAllAsDirty(control.controls)
+        continue
+      }
+
+      control.markAsDirty()
+    }
+  }
+
   protected forceCheck () {
     this.onStatusChanged(this.form, this.formErrors, this.validationMessages, false)
   }
@@ -59,7 +74,8 @@ export abstract class FormReactive {
         this.onStatusChanged(
           form.controls[field] as FormGroup,
           formErrors[field] as FormReactiveErrors,
-          validationMessages[field] as FormReactiveValidationMessages
+          validationMessages[field] as FormReactiveValidationMessages,
+          onlyDirty
         )
         continue
       }