public/lib/local-storage-adapter.js (24 lines of code) (raw):
/**
* Adapter wrapping browser localStorage.
* Values are namespaced by default to avoid name collisions.
*/
import angular from 'angular';
angular.module('wfLocalStorageAdapter', [])
.factory('wfLocalStorageAdapter', ['$log', function ($log) {
var DEFAULT_PREFIX = 'wf_';
class LocalStorageAdapter {
/**
* Retrieve a value from localStorage.
* @throws {Error} If localStorage is unavailable.
* @return {String}
*/
get(key, prefix = DEFAULT_PREFIX) {
return window.localStorage.getItem(prefix + key);
}
/**
* Retrieve and parse JSON stringified object from local storage.
* @return {Object}
*/
getObject(key, prefix) {
var raw = this.get(key, prefix);
if (!raw) {
return;
}
return JSON.parse(raw);
}
/**
* Store a value in localStorage.
* @throws {Error} If localStorage is unavailable or full.
*/
set(key, value, prefix = DEFAULT_PREFIX) {
if (typeof(value) == 'object') {
value = JSON.stringify(value);
}
window.localStorage.setItem(prefix + key, value);
}
}
return new LocalStorageAdapter();
}]);