LP1889128 Confirm data loaded before Place Hold activated
authorBill Erickson <berickxx@gmail.com>
Tue, 29 Sep 2020 18:26:56 +0000 (14:26 -0400)
committerJane Sandberg <sandbej@linnbenton.edu>
Wed, 6 Jan 2021 00:48:27 +0000 (16:48 -0800)
When changing users in the place hold form of the staff catalog, the
form resets itself and refreshes all of the user and bib, etc. data.
This patch ensures all data has been retrieved before the place hold
button is reactivated after changing the user.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Signed-off-by: Jane Sandberg <sandbej@linnbenton.edu>
Open-ILS/src/eg2/src/app/staff/catalog/hold/hold.component.ts

index f0ae758..c079a16 100644 (file)
@@ -202,9 +202,9 @@ export class HoldComponent implements OnInit {
     }
 
     // Load the bib, call number, copy, etc. data associated with each target.
-    getTargetMeta() {
-        this.holds.getHoldTargetMeta(this.holdType, this.holdTargets)
-        .subscribe(meta => {
+    getTargetMeta(): Promise<any> {
+        return this.holds.getHoldTargetMeta(this.holdType, this.holdTargets)
+        .toPromise().then(meta => {
             this.holdContexts.filter(ctx => ctx.holdTarget === meta.target)
             .forEach(ctx => {
                 ctx.holdMeta = meta;
@@ -318,17 +318,20 @@ export class HoldComponent implements OnInit {
         this.getUser();
     }
 
-    getUser(id?: number) {
+    getUser(id?: number): Promise<any> {
 
-        this.resetForm(true);
+        let promise = this.resetForm(true);
 
         const flesh = {flesh: 1, flesh_fields: {au: ['settings']}};
 
-        const promise = id ? this.patron.getById(id, flesh) :
-            this.patron.getByBarcode(this.userBarcode, flesh);
+        promise = promise.then(_ => {
+            return id ?
+                this.patron.getById(id, flesh) :
+                this.patron.getByBarcode(this.userBarcode, flesh);
+        });
 
         this.badBarcode = null;
-        promise.then(user => {
+        return promise.then(user => {
 
             if (!user) {
                 // IDs are assumed to valid
@@ -343,7 +346,7 @@ export class HoldComponent implements OnInit {
         });
     }
 
-    resetForm(keepBarcode?: boolean) {
+    resetForm(keepBarcode?: boolean): Promise<any> {
         this.user = null;
         this.notifyEmail = true;
         this.notifyPhone = true;
@@ -361,7 +364,7 @@ export class HoldComponent implements OnInit {
         });
 
         // Required after rebuilding the contexts
-        this.getTargetMeta();
+        return this.getTargetMeta();
     }
 
     applyUserSettings() {