From 919ef2f991edfb6f9a75e0d5a55ae22e0165ae82 Mon Sep 17 00:00:00 2001 From: larkin Date: Wed, 22 Jul 2015 10:58:28 -0700 Subject: [PATCH] [Persistence] Add localstorage persistence --- example/localstorage/bundle.json | 18 ++++++ .../src/LocalStoragePersistenceProvider.js | 62 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 example/localstorage/bundle.json create mode 100644 example/localstorage/src/LocalStoragePersistenceProvider.js diff --git a/example/localstorage/bundle.json b/example/localstorage/bundle.json new file mode 100644 index 0000000000..b164f9aaa9 --- /dev/null +++ b/example/localstorage/bundle.json @@ -0,0 +1,18 @@ +{ + "extensions": { + "components": [ + { + "provides": "persistenceService", + "type": "provider", + "implementation": "LocalStoragePersistenceProvider.js", + "depends": [ "$q", "PERSISTENCE_SPACE" ] + } + ], + "constants": [ + { + "key": "PERSISTENCE_SPACE", + "value": "mct" + } + ] + } +} \ No newline at end of file diff --git a/example/localstorage/src/LocalStoragePersistenceProvider.js b/example/localstorage/src/LocalStoragePersistenceProvider.js new file mode 100644 index 0000000000..b01e6a569b --- /dev/null +++ b/example/localstorage/src/LocalStoragePersistenceProvider.js @@ -0,0 +1,62 @@ +/** + * Stubbed implementation of a persistence provider, + * to permit objects to be created, saved, etc. + */ +define( + [], + function () { + 'use strict'; + + function BrowserPersistenceProvider($q, SPACE) { + var spaces = SPACE ? [SPACE] : [], + promises = { + as: function (value) { + return $q.when(value); + } + }; + + var setValue = function(key, value) { + localStorage[key] = JSON.stringify(value); + }; + + var getValue = function(key) { + if (localStorage[key]) { + return JSON.parse(localStorage[key]); + } + return {}; + }; + + var provider = { + listSpaces: function () { + return promises.as(spaces); + }, + listObjects: function (space) { + var space_obj = getValue(space); + return promises.as(Object.keys(space_obj)); + }, + createObject: function (space, key, value) { + var space_obj = getValue(space); + space_obj[key] = value; + setValue(space, space_obj); + return promises.as(true); + }, + readObject: function (space, key) { + var space_obj = getValue(space); + return promises.as(space_obj[key]); + }, + deleteObject: function (space, key, value) { + var space_obj = getValue(space); + delete space_obj[key]; + return promises.as(true); + } + }; + + provider.updateObject = provider.createObject; + + return provider; + + } + + return BrowserPersistenceProvider; + } +);