LP#1942220: (follow-up) restore LIDs if user abandons changes
authorGalen Charlton <gmc@equinoxOLI.org>
Sat, 23 Jul 2022 14:41:12 +0000 (14:41 +0000)
committerGalen Charlton <gmc@equinoxOLI.org>
Sat, 23 Jul 2022 14:41:12 +0000 (14:41 +0000)
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Open-ILS/src/eg2/src/app/staff/acq/lineitem/copies.component.ts

index 58e88b1..b6ae8e2 100644 (file)
@@ -2,7 +2,7 @@ import {Component, OnInit, AfterViewInit, Input, Output, EventEmitter,
   ViewChild} from '@angular/core';
 import {Router, ActivatedRoute, ParamMap} from '@angular/router';
 import {Observable, of} from 'rxjs';
-import {tap} from 'rxjs/operators';
+import {tap, map} from 'rxjs/operators';
 import {Pager} from '@eg/share/util/pager';
 import {IdlService, IdlObject} from '@eg/core/idl.service';
 import {OrgService} from '@eg/core/org.service';
@@ -311,7 +311,14 @@ export class LineitemCopiesComponent implements OnInit, AfterViewInit {
 
     canDeactivate(): Observable<boolean> {
         if (this.dirty) {
-            return this.leaveConfirm.open();
+            return this.leaveConfirm.open().pipe(map(confirmed => {
+                if (confirmed) {
+                    // fire-and-forget fetching the line item to restore it
+                    // to its previous state
+                    this.liService.getFleshedLineitems([ this.lineitemId ], {toCache: true}).toPromise();
+                }
+                return confirmed;
+            }));
         } else {
             return of(true);
         }