webstaff: start teaching egHatch about sessionStorage
authorGalen Charlton <gmc@esilibrary.com>
Thu, 8 Oct 2015 01:05:48 +0000 (01:05 +0000)
committerKathy Lussier <klussier@masslnc.org>
Tue, 2 Feb 2016 19:58:49 +0000 (14:58 -0500)
This patch adds getSessionItem(), setSessionItem(), and
removeSessionItem(), which are all wrappers around
$window.sessionStorage. This is done to support settings
whose values are sticky for the duration of a session,
which at present is the lifetime of the browser tab.

An alternative would be using session cookies; some user
testing is needed to see which lifetime makes the most
sense.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Open-ILS/web/js/ui/default/staff/services/hatch.js

index 9e41d91..0b8935b 100644 (file)
@@ -301,6 +301,12 @@ angular.module('egCoreMod')
         return JSON.parse(val);
     }
 
+    service.getSessionItem = function(key) {
+        var val = $window.sessionStorage.getItem(key);
+        if (val == null) return;
+        return JSON.parse(val);
+    }
+
     service.setItem = function(key, value) {
         var str = JSON.stringify(value);
         return service.setRemoteItem(key, str)['catch'](
@@ -333,6 +339,12 @@ angular.module('egCoreMod')
         $window.localStorage.setItem(key, jsonified);
     }
 
+    service.setSessionItem = function(key, value, jsonified) {
+        if (jsonified === undefined ) 
+            jsonified = JSON.stringify(value);
+        $window.sessionStorage.setItem(key, jsonified);
+    }
+
     // appends the value to the existing item stored at key.
     // If not item is found at key, this behaves just like setItem()
     service.appendItem = function(key, value) {
@@ -391,6 +403,10 @@ angular.module('egCoreMod')
         $window.localStorage.removeItem(key);
     }
 
+    service.removeSessionItem = function(key) {
+        $window.sessionStorage.removeItem(key);
+    }
+
     // if set, prefix limits the return set to keys starting with 'prefix'
     service.getKeys = function(prefix) {
         return service.getRemoteKeys(prefix)['catch'](