LP1840773 SCKO Angular
authorBill Erickson <berickxx@gmail.com>
Fri, 24 Jun 2022 20:17:40 +0000 (16:17 -0400)
committerBill Erickson <berickxx@gmail.com>
Fri, 24 Jun 2022 20:17:40 +0000 (16:17 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/scko/scko.component.html
Open-ILS/src/eg2/src/app/scko/scko.service.ts

index 1b8360a..f817261 100644 (file)
@@ -1,7 +1,7 @@
 
 <eg-scko-banner></eg-scko-banner>
 
-<eg-string i18n-text key="scko.checkout.success" text="Checkout Succeeded"></eg-string>
+<eg-string i18n-text key="scko.unknown" text="Unknown Error Occurred"></eg-string>
 <eg-string i18n-text key="scko.renew.success" text="Renewal Succeeded"></eg-string>
 <eg-string i18n-text key="scko.item.not_found" 
   text="Item was not found in the system. Try re-scanning the item."></eg-string>
index c5a215f..e0109f0 100644 (file)
@@ -14,9 +14,13 @@ import {AudioService} from '@eg/share/util/audio.service';
 import {StringService} from '@eg/share/string/string.service';
 
 interface CheckoutStat {
-    override?: boolean;
-    redo?: boolean;
-    renew?: boolean;
+    override: boolean;
+    redo: boolean;
+    renew: boolean;
+    displayText: string;
+    displayTextArgs: any;
+    alertSound: string;
+    shouldPopup: boolean;
 }
 
 @Injectable({providedIn: 'root'})
@@ -248,9 +252,12 @@ export class SckoService {
             } else if (stat.renew) {
                 return this.renew(barcode);
             }
-        });
 
-        // return this.router.navigate(['/scko']);
+        // Checkout actions always takes us back to the main page
+        // so we can see our items out in progress.
+        })
+        .then(stat => this.notifyPatron(stat))
+        .finally(() => this.router.navigate(['/scko']));
     }
 
     renew(barcode: string, override?: boolean): Promise<any> {
@@ -278,27 +285,28 @@ export class SckoService {
         });
     }
 
-    notifyPatron(text: string, sound: string, popup?: boolean, stringArgs?: any) {
+    notifyPatron(stat: CheckoutStat) {
         this.statusDisplayText = '';
 
-        if (this.alertAudio && sound) {
-            this.audio.play(sound);
+        if (this.alertAudio && stat.alertSound) {
+            this.audio.play(stat.alertSound);
         }
 
-        if (!text) { return; }
+        if (!stat.displayText) { return; }
 
-        this.strings.interpolate(text, stringArgs).then(str => {
+        this.strings.interpolate(stat.displayText, stat.displayTextArgs)
+        .then(str => {
             this.statusDisplayText = str;
 
-            if (this.alertPopup && popup && str) {
+            if (this.alertPopup && stat.shouldPopup && str) {
                 this.alertDialog.dialogBody = str;
                 this.alertDialog.open().toPromise();
             }
         });
     }
 
-    handleCheckoutResult(result: any,
-        barcode: string, action: string): Promise<CheckoutStat> {
+    handleCheckoutResult(
+        result: any, barcode: string, action: string): Promise<CheckoutStat> {
 
         if (Array.isArray(result)) {
             result = result[0];
@@ -312,17 +320,22 @@ export class SckoService {
             return;
         }
 
-        let alertText = '';
-        let alertSound = '';
+        const checkoutStat: CheckoutStat = {
+            displayText: 'scko.unknown',
+            alertSound: '',
+            shouldPopup: false,
+            redo: false,
+            override: false,
+            renew: false,
+            displayTextArgs: {}
+        };
 
         if (evt.textcode === 'SUCCESS') {
-            alertText = `scko.${action}.success`;
-            alertSound = `success.scko.${action}`;
-            this.notifyPatron;
-            return Promise.resolve({});
+            checkoutStat.displayText = `scko.${action}.success`;
+            checkoutStat.alertSound = `success.scko.${action}`;
         }
 
-        return Promise.resolve({});
+        return Promise.resolve(checkoutStat);
     }
 }