🐛 fix bug of caching when add new schema

(cherry picked from commit 9fb9e5848c)
This commit is contained in:
Hugo Dominguez
2023-08-19 15:59:33 -06:00
committed by github-actions[bot]
parent 8d295419c7
commit e3ea2cb2b0

View File

@@ -14,7 +14,7 @@ import {
import { UntypedFormGroup } from '@angular/forms'; import { UntypedFormGroup } from '@angular/forms';
import { RegistryService } from '../../../../core/registry/registry.service'; import { RegistryService } from '../../../../core/registry/registry.service';
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service'; import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
import { switchMap, take } from 'rxjs/operators'; import { switchMap, take, tap } from 'rxjs/operators';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { Observable, combineLatest } from 'rxjs'; import { Observable, combineLatest } from 'rxjs';
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'; import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
@@ -156,42 +156,48 @@ export class MetadataSchemaFormComponent implements OnInit, OnDestroy {
* Emit the updated/created schema using the EventEmitter submitForm * Emit the updated/created schema using the EventEmitter submitForm
*/ */
onSubmit(): void { onSubmit(): void {
const clearMetadataSchemaRequests$ = this.registryService
this.registryService.clearMetadataSchemaRequests(); .getActiveMetadataSchema()
.pipe(
take(1),
switchMap((schema: MetadataSchema) => {
const metadataValues = {
prefix: this.name.value,
namespace: this.namespace.value,
};
clearMetadataSchemaRequests$ let createOrUpdate$: Observable<MetadataSchema>;
.pipe(
switchMap(() =>
this.registryService.getActiveMetadataSchema().pipe(take(1))
),
switchMap((schema: MetadataSchema) => {
const metadataValues = {
prefix: this.name.value,
namespace: this.namespace.value,
};
let createOrUpdate$: Observable<MetadataSchema>; if (schema == null) {
createOrUpdate$ =
this.registryService.createOrUpdateMetadataSchema(
Object.assign(new MetadataSchema(), metadataValues)
);
} else {
const updatedSchema = Object.assign(
new MetadataSchema(),
schema,
{
namespace: metadataValues.namespace,
}
);
createOrUpdate$ =
this.registryService.createOrUpdateMetadataSchema(
updatedSchema
);
}
if (schema == null) { return createOrUpdate$;
createOrUpdate$ = this.registryService.createOrUpdateMetadataSchema( }),
Object.assign(new MetadataSchema(), metadataValues) tap(() => {
); this.registryService.clearMetadataSchemaRequests().subscribe();
} else { })
const updatedSchema = Object.assign(new MetadataSchema(), schema, { )
namespace: metadataValues.namespace, .subscribe((updatedOrCreatedSchema: MetadataSchema) => {
}); this.submitForm.emit(updatedOrCreatedSchema);
createOrUpdate$ = this.clearFields();
this.registryService.createOrUpdateMetadataSchema(updatedSchema); this.registryService.cancelEditMetadataSchema();
} });
return createOrUpdate$;
})
)
.subscribe((updatedOrCreatedSchema: MetadataSchema) => {
this.submitForm.emit(updatedOrCreatedSchema);
this.clearFields();
this.registryService.cancelEditMetadataSchema();
});
} }
/** /**