From 0b03908ba83c75cbeb8ad1c779609b193c117940 Mon Sep 17 00:00:00 2001 From: hallgren Date: Wed, 3 Apr 2013 20:23:32 +0000 Subject: [PATCH] Adding src/www/js/localstorage.js A common interface to localStorage, to store JSON data under a unique prefix. --- src/www/js/localstorage.js | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/www/js/localstorage.js diff --git a/src/www/js/localstorage.js b/src/www/js/localstorage.js new file mode 100644 index 000000000..c103c28bd --- /dev/null +++ b/src/www/js/localstorage.js @@ -0,0 +1,52 @@ + + +// See http://diveintohtml5.info/storage.html + +function supports_html5_storage() { + try { + return 'localStorage' in window && window['localStorage'] !== null; + } catch (e) { + return false; + } +} + +// An interface to localStorage to store JSON data under a unique prefix +function appLocalStorage(appPrefix,fakeIt) { + + function methods(storage) { + return { + get: function (name,def) { + var id=appPrefix+name + return storage[id] ? JSON.parse(storage[id]) : def; + }, + put: function (name,value) { + var id=appPrefix+name; + storage[id]=JSON.stringify(value); + }, + remove: function(name) { + var id=appPrefix+name; + delete storage[id] + }, + ls: function(prefix) { + var pre=appPrefix+prefix + var files=[] + for(var i in storage) + if(hasPrefix(i,pre)) files.push(i.substr(pre.length)) + files.sort() + return files + }, + get count() { return this.get("count",0); }, + set count(v) { this.put("count",v); } + } + } + + function get_html5_storage() { + try { + return 'localStorage' in window && window['localStorage'] || [] + } catch (e) { + return []; // fake it + } + } + + return methods(fakeIt || get_html5_storage()) +}