mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
workspace item update after move
This commit is contained in:
@@ -410,8 +410,8 @@ export class RelationshipService extends DataService<Relationship> {
|
||||
const update$ = this.update(updatedRelationship);
|
||||
|
||||
update$.pipe(
|
||||
filter((relationshipRD: RemoteData<Relationship>) => relationshipRD.state === RemoteDataState.ResponsePending),
|
||||
take(1),
|
||||
// filter((relationshipRD: RemoteData<Relationship>) => relationshipRD.state === RemoteDataState.ResponsePending),
|
||||
// take(1),
|
||||
).subscribe((relationshipRD: RemoteData<Relationship>) => {
|
||||
if (relationshipRD.state === RemoteDataState.ResponsePending) {
|
||||
this.refreshRelationshipItemsInCacheByRelationship(reoRel.relationship.id);
|
||||
|
@@ -3,7 +3,7 @@ import { AbstractControl, FormControl } from '@angular/forms';
|
||||
import { DynamicFormArrayGroupModel, DynamicFormControlEvent } from '@ng-dynamic-forms/core';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { Observable, of as observableOf, Subject, Subscription } from 'rxjs';
|
||||
import { filter } from 'rxjs/operators';
|
||||
import { filter, switchMap } from 'rxjs/operators';
|
||||
import { AppState } from '../../../../../app.reducer';
|
||||
import { RelationshipService } from '../../../../../core/data/relationship.service';
|
||||
import { RemoteData } from '../../../../../core/data/remote-data';
|
||||
@@ -24,6 +24,7 @@ import { FormFieldMetadataValueObject } from '../../models/form-field-metadata-v
|
||||
import { RelationshipOptions } from '../../models/relationship-options.model';
|
||||
import { DynamicConcatModel } from '../models/ds-dynamic-concat.model';
|
||||
import { RemoveRelationshipAction } from '../relation-lookup-modal/relationship.actions';
|
||||
import { SubmissionObject } from '../../../../../core/submission/models/submission-object.model';
|
||||
|
||||
// tslint:disable:max-classes-per-file
|
||||
/**
|
||||
@@ -103,12 +104,13 @@ export class ReorderableRelationship extends Reorderable {
|
||||
}
|
||||
|
||||
update(): Observable<RemoteData<Relationship>> {
|
||||
const updatedRelationship$ = this.relationshipService.updatePlace(this);
|
||||
const updatedRelationship$ = this.relationshipService.updatePlace(this).pipe(
|
||||
getSucceededRemoteData(),
|
||||
);
|
||||
|
||||
updatedRelationship$.pipe(
|
||||
getSucceededRemoteData()
|
||||
).subscribe(() => {
|
||||
updatedRelationship$.subscribe(() => {
|
||||
this.oldIndex = this.newIndex;
|
||||
|
||||
});
|
||||
|
||||
return updatedRelationship$;
|
||||
|
@@ -13,7 +13,7 @@ import {
|
||||
DynamicTemplateDirective
|
||||
} from '@ng-dynamic-forms/core';
|
||||
import { combineLatest as observableCombineLatest, Observable, of as observableOf } from 'rxjs';
|
||||
import { map, switchMap, take } from 'rxjs/operators';
|
||||
import { filter, map, switchMap, take } from 'rxjs/operators';
|
||||
import { RelationshipService } from '../../../../../../core/data/relationship.service';
|
||||
import { RemoteData } from '../../../../../../core/data/remote-data';
|
||||
import { Relationship } from '../../../../../../core/shared/item-relationships/relationship.model';
|
||||
@@ -34,6 +34,11 @@ import {
|
||||
} from '../../existing-metadata-list-element/existing-metadata-list-element.component';
|
||||
import { DynamicConcatModel } from '../ds-dynamic-concat.model';
|
||||
import { DynamicRowArrayModel } from '../ds-dynamic-row-array-model';
|
||||
import { SaveSubmissionSectionFormSuccessAction } from '../../../../../../submission/objects/submission-objects.actions';
|
||||
import { Store } from '@ngrx/store';
|
||||
import { SubmissionState } from '../../../../../../submission/submission.reducers';
|
||||
import { ObjectCacheService } from '../../../../../../core/cache/object-cache.service';
|
||||
import { RequestService } from '../../../../../../core/data/request.service';
|
||||
|
||||
@Component({
|
||||
selector: 'ds-dynamic-form-array',
|
||||
@@ -64,7 +69,10 @@ export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent imple
|
||||
protected relationshipService: RelationshipService,
|
||||
protected submissionObjectService: SubmissionObjectDataService,
|
||||
protected zone: NgZone,
|
||||
protected formService: DynamicFormService
|
||||
protected formService: DynamicFormService,
|
||||
private store: Store<SubmissionState>,
|
||||
private objectCache: ObjectCacheService,
|
||||
private requestService: RequestService
|
||||
) {
|
||||
super(layoutService, validationService);
|
||||
}
|
||||
@@ -154,11 +162,13 @@ export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent imple
|
||||
})
|
||||
}
|
||||
this.reorderables = reorderables;
|
||||
|
||||
const updatedReorderables: Array<Observable<any>> = [];
|
||||
this.reorderables.forEach((reorderable: Reorderable, index: number) => {
|
||||
if (reorderable.hasMoved) {
|
||||
const prevIndex = reorderable.oldIndex;
|
||||
reorderable.update().pipe(take(1)).subscribe((v) => {
|
||||
const updatedReorderable = reorderable.update().pipe(take(1));
|
||||
updatedReorderables.push(updatedReorderable);
|
||||
updatedReorderable.subscribe((v) => {
|
||||
if (reorderable instanceof ReorderableFormFieldMetadataValue) {
|
||||
const reoMD = reorderable as ReorderableFormFieldMetadataValue;
|
||||
const mdl = Object.assign({}, reoMD.model, { value: reoMD.metadataValue });
|
||||
@@ -173,10 +183,29 @@ export class DsDynamicFormArrayComponent extends DynamicFormArrayComponent imple
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
observableCombineLatest(...updatedReorderables).pipe(
|
||||
switchMap(() => this.refreshWorkspaceItemInCache(this.model.submissionId)),
|
||||
).subscribe((submissionObject: SubmissionObject) => this.store.dispatch(new SaveSubmissionSectionFormSuccessAction(this.model.submissionId, [submissionObject], false)));
|
||||
});
|
||||
})
|
||||
}
|
||||
refreshWorkspaceItemInCache(submissionId: string): Observable<SubmissionObject> {
|
||||
return this.submissionObjectService.getHrefByID(submissionId).pipe(take(1)).pipe(
|
||||
switchMap((href: string) => {
|
||||
this.objectCache.remove(href);
|
||||
this.requestService.removeByHrefSubstring(submissionId);
|
||||
return observableCombineLatest(
|
||||
this.objectCache.hasBySelfLinkObservable(href),
|
||||
this.requestService.hasByHrefObservable(href)
|
||||
).pipe(
|
||||
filter(([existsInOC, existsInRC]) => !existsInOC && !existsInRC),
|
||||
take(1),
|
||||
switchMap(() => this.submissionObjectService.findById(submissionId).pipe(getSucceededRemoteData(), getRemoteDataPayload()) as Observable<SubmissionObject>)
|
||||
)
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
moveSelection(event: CdkDragDrop<Relationship>) {
|
||||
this.model.moveGroup(event.previousIndex, event.currentIndex - event.previousIndex);
|
||||
|
Reference in New Issue
Block a user