Skip to content

Commit 62e07e7

Browse files
115046: Fixed issue where store operations would sometimes be performed in incorrect order
1 parent a596af0 commit 62e07e7

2 files changed

Lines changed: 18 additions & 7 deletions

File tree

src/app/core/data/object-updates/object-updates.service.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
filter,
1616
map,
1717
switchMap,
18+
take,
1819
} from 'rxjs/operators';
1920

2021
import {
@@ -212,17 +213,29 @@ export class ObjectUpdatesService {
212213
* @param url The page's URL for which the changes are saved
213214
* @param field An updated field for the page's object
214215
*/
215-
saveAddFieldUpdate(url: string, field: Identifiable) {
216+
saveAddFieldUpdate(url: string, field: Identifiable): Observable<boolean> {
217+
const update$: Observable<boolean> = this.getFieldUpdatesExclusive(url, [field]).pipe(
218+
filter((fieldUpdates: FieldUpdates) => fieldUpdates[field.uuid].changeType === FieldChangeType.ADD),
219+
take(1),
220+
map(() => true),
221+
);
216222
this.saveFieldUpdate(url, field, FieldChangeType.ADD);
223+
return update$;
217224
}
218225

219226
/**
220227
* Calls the saveFieldUpdate method with FieldChangeType.REMOVE
221228
* @param url The page's URL for which the changes are saved
222229
* @param field An updated field for the page's object
223230
*/
224-
saveRemoveFieldUpdate(url: string, field: Identifiable) {
231+
saveRemoveFieldUpdate(url: string, field: Identifiable): Observable<boolean> {
232+
const update$: Observable<boolean> = this.getFieldUpdatesExclusive(url, [field]).pipe(
233+
filter((fieldUpdates: FieldUpdates) => fieldUpdates[field.uuid].changeType === FieldChangeType.REMOVE),
234+
take(1),
235+
map(() => true),
236+
);
225237
this.saveFieldUpdate(url, field, FieldChangeType.REMOVE);
238+
return update$;
226239
}
227240

228241
/**

src/app/item-page/edit-item-page/item-relationships/edit-relationship-list/edit-relationship-list.component.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ export class EditRelationshipListComponent implements OnInit, OnDestroy {
342342
const relatedItem: Item = searchResult.indexableObject;
343343
if (type === 'add') {
344344
return this.relationshipService.getNameVariant(this.listId, relatedItem.uuid).pipe(
345-
map((nameVariant) => {
345+
switchMap((nameVariant) => {
346346
const update = {
347347
uuid: `${this.relationshipType.id}-${relatedItem.uuid}`,
348348
nameVariant,
@@ -351,8 +351,7 @@ export class EditRelationshipListComponent implements OnInit, OnDestroy {
351351
originalItem: this.item,
352352
relatedItem,
353353
} as RelationshipIdentifiable;
354-
this.objectUpdatesService.saveAddFieldUpdate(this.url, update);
355-
return update;
354+
return this.objectUpdatesService.saveAddFieldUpdate(this.url, update);
356355
}),
357356
take(1),
358357
);
@@ -369,8 +368,7 @@ export class EditRelationshipListComponent implements OnInit, OnDestroy {
369368
originalItem: this.item,
370369
relationship,
371370
} as RelationshipIdentifiable;
372-
this.objectUpdatesService.saveRemoveFieldUpdate(this.url,update);
373-
return update;
371+
return this.objectUpdatesService.saveRemoveFieldUpdate(this.url,update);
374372
}),
375373
);
376374
}),

0 commit comments

Comments
 (0)