mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
🐛 fix bug of caching when add new schema
(cherry picked from commit 9fb9e5848c
)
This commit is contained in:

committed by
github-actions[bot]
![github-actions[bot]](/assets/img/avatar_default.png)
parent
8d295419c7
commit
e3ea2cb2b0
@@ -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();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user