Skip to content

Commit 227d471

Browse files
115046: Fixed issue where store operations would sometimes be performed in incorrect order
1 parent 4a70382 commit 227d471

2 files changed

Lines changed: 19 additions & 9 deletions

File tree

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

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
SetEditableFieldUpdateAction,
2020
SetValidFieldUpdateAction
2121
} from './object-updates.actions';
22-
import { distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';
22+
import { distinctUntilChanged, filter, map, switchMap, take } from 'rxjs/operators';
2323
import {
2424
hasNoValue,
2525
hasValue,
@@ -198,17 +198,29 @@ export class ObjectUpdatesService {
198198
* @param url The page's URL for which the changes are saved
199199
* @param field An updated field for the page's object
200200
*/
201-
saveAddFieldUpdate(url: string, field: Identifiable) {
201+
saveAddFieldUpdate(url: string, field: Identifiable): Observable<boolean> {
202+
const update$: Observable<boolean> = this.getFieldUpdatesExclusive(url, [field]).pipe(
203+
filter((fieldUpdates: FieldUpdates) => fieldUpdates[field.uuid].changeType === FieldChangeType.ADD),
204+
take(1),
205+
map(() => true),
206+
);
202207
this.saveFieldUpdate(url, field, FieldChangeType.ADD);
208+
return update$;
203209
}
204210

205211
/**
206212
* Calls the saveFieldUpdate method with FieldChangeType.REMOVE
207213
* @param url The page's URL for which the changes are saved
208214
* @param field An updated field for the page's object
209215
*/
210-
saveRemoveFieldUpdate(url: string, field: Identifiable) {
216+
saveRemoveFieldUpdate(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.REMOVE),
219+
take(1),
220+
map(() => true),
221+
);
211222
this.saveFieldUpdate(url, field, FieldChangeType.REMOVE);
223+
return update$;
212224
}
213225

214226
/**

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ export class EditRelationshipListComponent implements OnInit, OnDestroy {
312312
const relatedItem: Item = searchResult.indexableObject;
313313
if (type === 'add') {
314314
return this.relationshipService.getNameVariant(this.listId, relatedItem.uuid).pipe(
315-
map((nameVariant) => {
315+
switchMap((nameVariant) => {
316316
const update = {
317317
uuid: `${this.relationshipType.id}-${relatedItem.uuid}`,
318318
nameVariant,
@@ -321,8 +321,7 @@ export class EditRelationshipListComponent implements OnInit, OnDestroy {
321321
originalItem: this.item,
322322
relatedItem,
323323
} as RelationshipIdentifiable;
324-
this.objectUpdatesService.saveAddFieldUpdate(this.url, update);
325-
return update;
324+
return this.objectUpdatesService.saveAddFieldUpdate(this.url, update);
326325
}),
327326
take(1)
328327
);
@@ -339,9 +338,8 @@ export class EditRelationshipListComponent implements OnInit, OnDestroy {
339338
originalItem: this.item,
340339
relationship,
341340
} as RelationshipIdentifiable;
342-
this.objectUpdatesService.saveRemoveFieldUpdate(this.url,update);
343-
return update;
344-
})
341+
return this.objectUpdatesService.saveRemoveFieldUpdate(this.url,update);
342+
}),
345343
);
346344
}),
347345
take(1)

0 commit comments

Comments
 (0)